当前位置:网站首页>Input length must be multiple of 8 when decrypting with padded cipher
Input length must be multiple of 8 when decrypting with padded cipher
2022-07-31 05:08:00 【小果子^_^】
Des密码加密报错:Input length must be multiple of 8 when decrypting with padded cipher
错误原因:
- 判断加密代码上一句执行的是否是解密
我的是先执行解密,然后加密,报的这个错误,原本是直接加密就好的 - 针对文件加密多写了一个字符
附上加密解密代码:
解密:直接调用DesUtil的decrypt方法即可
// DES解密key,限定24位
String DES_KEY = "WfJTKO9S4eLkrPz2JKrAnzdb";
// DES解密iv,限定8位
String DES_IV = "D076D35C";
String pwd = DesUtil.decrypt(userDto.getPsw(), ContentSecurityConstants.DES_KEY,
ContentSecurityConstants.DES_IV);
加密:
- 生成盐值
public static final Integer SALT_SIZE = 8;
/** * 生成随机的Byte[]作为salt. * * @param numBytes * byte数组的大小 */
public static byte[] generateSalt(int numBytes) {
Validate.isTrue(numBytes > 0, "numBytes argument must be a positive integer (1 or larger)", numBytes);
byte[] bytes = new byte[numBytes];
random.nextBytes(bytes);
return bytes;
}
public static byte[] generateSaltFix() {
return generateSalt(SALT_SIZE);
}
// 盐值
byte[] salt = generateSaltFix();
- PasswdService接口类
/** * 密码 * @param saltBytes 混淆码数组 * @param rawPass 明文密码 * @return 密码 */
public String entryptPassword(byte[] saltBytes,String rawPass);
- PasswdServiceImpl接口实现类
@Override
public String entryptPassword(byte[] saltBytes, String rawPass) {
String encPass = CredentialsDigest.digest(rawPass, saltBytes);
return encPass;
}
- CredentialsDigest证书加密接口
public interface CredentialsDigest {
/** * 散列生成摘要 * @Title: digest * @param plainCredentials 密码明文 * @param salt 混淆码数组 * @return: String */
public String digest(String plainCredentials, byte[] salt);
}
- CredentialsDigest证书加密抽象实现类
/** * Hash证书加密 * */
public abstract class AbstractHashCredentialsDigest implements CredentialsDigest {
public static final int HASH_INTERATIONS = 1024;
@Override
public String digest(String plainCredentials, byte[] salt) {
if (StringUtils.isBlank(plainCredentials)) {
return null;
}
byte[] hashPassword = digest(Cryptos.utf8encode(plainCredentials), salt);
return Encodes.encodeHex(hashPassword);
}
/** * 需要实现加密转换 * @Title: digest * @param input 输入字节数组 * @param salt 混淆字节数组 * @return: byte[] */
protected abstract byte[] digest(byte[] input, byte[] salt);
}
- 不同加密方式(当前使用的是SHA1密码加密 )
(1) SHA1证书加密
public class Sha1CredentialsDigest extends AbstractHashCredentialsDigest {
@Override
protected byte[] digest(byte[] input, byte[] salt) {
return Digests.sha1(input, salt, HASH_INTERATIONS);
}
}
(2) SHA256证书加密
/** * SHA256证书加密 */
public class Sha256CredentialsDigest extends AbstractHashCredentialsDigest implements
CredentialsDigest {
@Override
protected byte[] digest(byte[] input, byte[] salt) {
return Digests.sha256(input, salt, HASH_INTERATIONS);
}
}
(3) SHA512加密方式
/** * SHA512证书加密 */
public class Sha512CredentialsDigest extends AbstractHashCredentialsDigest implements
CredentialsDigest {
@Override
protected byte[] digest(byte[] input, byte[] salt) {
return Digests.sha512(input, salt, HASH_INTERATIONS);
}
}
边栏推荐
猜你喜欢

mysql存储过程

MySQL_关于JSON数据的查询

益智类游戏关卡设计:逆推法--巧解益智类游戏关卡设计

110 MySQL interview questions and answers (continuously updated)
![[debug highlights] Expected input batch_size (1) to match target batch_size (0)](/img/b3/ff6ccc3cd307befad3bd07a9f4a956.png)
[debug highlights] Expected input batch_size (1) to match target batch_size (0)

The input input box displays the precision of two decimal places
![[Cloud Native] DevOps (5): Integrating Harbor](/img/5a/dd33d7d3cb0124f328d2d38fff0125.png)
[Cloud Native] DevOps (5): Integrating Harbor

MySQL事务(transaction) (有这篇就足够了..)
![[R language] [3] apply, tapply, lapply, sapply, mapply and par function related parameters](/img/98/282d8d192f701ad33de48aeeb038b4.png)
[R language] [3] apply, tapply, lapply, sapply, mapply and par function related parameters

Open Source Smart Future | 2022 OpenAtom Global Open Source Summit OpenAtom openEuler sub-forum was successfully held
随机推荐
mysql stored procedure
centos7安装mysql5.7
DVWA之SQL注入
Visual studio shortcuts that improve efficiency, summary (updated from time to time)
Apache DButils使用注意事项--with modifiers “public“
Unity手机游戏性能优化系列:针对CPU端的性能调优
Redis进阶 - 缓存问题:一致性、穿击、穿透、雪崩、污染等.
Temporal线上部署
Puzzle Game Level Design: Reverse Method--Explaining Puzzle Game Level Design
矩池云快速安装torch-sparse、torch-geometric等包
CentOS7 安装MySQL 图文详细教程
Summary of MySQL common interview questions (recommended collection!!!)
STM32 - DMA
剑指offer专项突击版第15天
面试官:生成订单30分钟未支付,则自动取消,该怎么实现?
ERROR 1819 (HY000) Your password does not satisfy the current policy requirements
MySQL forgot password
ERROR 2003 (HY000) Can't connect to MySQL server on 'localhost3306' (10061)
Reference code series_1. Hello World in various languages
Workflow番外篇