Java使用DES加密解密
一、DES算法DES(Data Encryption Standard):数据加密标准,它是由IBM公司研制的一种对称密码算法。DES是一个分组加密算法,典型的DES以64位分组对数据加密,加密和解密用的是用一个算法。总长度64位,8字节,其中8位作为校验码,不参与加密算法。二、秘钥与加密算法秘钥是一种参数(它是在明文转换为密文或将密文转换为明文的算法中输入的数据)加密算法...
·
一、DES算法
DES(Data Encryption Standard):数据加密标准,它是由IBM公司研制的一种对称密码算法。
DES是一个分组加密算法,典型的DES以64位分组对数据加密,加密和解密用的是用一个算法。
总长度64位,8字节,其中8位作为校验码,不参与加密算法。
二、秘钥与加密算法
秘钥是一种参数(它是在明文转换为密文或将密文转换为明文的算法中输入的数据)
加密算法是明文转换为密文的变换函数,同样的秘钥可以用不同的加密算法,得到的密文就不一样
比如凯撒密码,就是将字母循环后移n位,这个n就是一个秘钥,循环后移的方法叫做算法
三、DES加密流程
四、DES加密与解密
提供原始秘钥:长度64位,8字节
@Test
public void testDES() throws Exception {
// 明文
String plainText = "abcd";
System.out.println("明文:" + plainText);
// 提供原始秘钥:长度64位,8字节
String originKey = "12345678";
// 根据给定的字节数组构建一个秘钥
SecretKeySpec key = new SecretKeySpec(originKey.getBytes(), "DES");
// 加密
// 1.获取加密算法工具类
Cipher cipher = Cipher.getInstance("DES");
// 2.对工具类对象进行初始化,
// mode:加密/解密模式
// key:对原始秘钥处理之后的秘钥
cipher.init(Cipher.ENCRYPT_MODE, key);
// 3.用加密工具类对象对明文进行加密
byte[] encipherByte = cipher.doFinal(plainText.getBytes());
// 防止乱码,使用Base64编码
String encode = Base64.encodeBase64String(encipherByte);
System.out.println("加密:" + encode);
// 解密
// 2.对工具类对象进行初始化
cipher.init(Cipher.DECRYPT_MODE, key);
// 3.用加密工具类对象对密文进行解密
byte[] decode = Base64.decodeBase64(encode);
byte[] decipherByte = cipher.doFinal(decode);
String decipherText = new String(decipherByte);
System.out.println("解密:" + decipherText);
}
结果:
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献1条内容
所有评论(0)