当前位置:网站首页>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事务隔离级别详解
- ES source code API call link source code analysis
- [Detailed explanation of ORACLE Explain]
- PWN ROP
- MySQL database backup
- MySQL忘记密码怎么办
- 限流的原理
- Mysql application cannot find my.ini file after installation
- ABC D - Distinct Trio (Number of k-tuples
- Information System Project Manager Core Test Site (55) Configuration Manager (CMO) Work
猜你喜欢
随机推荐
Minio upload file ssl certificate is not trusted
Unity框架设计系列:Unity 如何设计网络框架
Minesweeper game (written in c language)
Three oj questions on leetcode
[py script] batch binarization processing images
Blockbuster | foundation for platinum, gold, silver gave nameboards donors
MySQL开窗函数
CentOS7 install MySQL graphic detailed tutorial
sql语句-如何以一个表中的数据为条件据查询另一个表中的数据
Go language study notes - dealing with timeout problems - Context usage | Go language from scratch
Typec手机有线网卡网线转网口转接口快充方案
如何将项目部署到服务器上(全套教程)
Unity Tutorial: URP Rendering Pipeline Practical Tutorial Series [1]
mysql使用on duplicate key update批量更新数据
Minio上传文件ssl证书不受信任
matlab simulink欠驱动水面船舶航迹自抗扰控制研究
ERP生产作业控制 金蝶
MySQL transaction (transaction) (this is enough..)
SQL injection of DVWA
ABC D - Distinct Trio(k元组的个数








