java⽣成对称密钥_java中以DES的⽅式实现对称加密并提供
密钥的实例
java中以DES的⽅式实现对称加密并提供密钥的实例
加密原理
java加密方式有哪些DES 使⽤⼀个 56 位的密钥以及附加的 8 位奇偶校验位,产⽣最⼤ 64 位的分组⼤⼩。这是⼀个迭代的分组密码,使⽤称为 Feistel 的技术,其中将加密的⽂本块分成两半。使⽤⼦密钥对其中⼀半应⽤循环功能,然后将输出与另⼀半进⾏“异或”运算;接着交换这两半,这⼀过程会继续下去,但最后⼀个循环不交换。DES 使⽤ 16 个循环,使⽤异或,置换,代换,移位操作四种基本运算。
注释都在代码⾥了,⼲了:
pto.Cipher;
pto.KeyGenerator;
pto.SecretKey;
pto.spec.SecretKeySpec;
l.bind.annotation.adapters.HexBinaryAdapter;
import dec.binary.Hex;
public class Main {
static String src = "Hello,sahadev!";
public static void main(String[] args) {
DES();
}
public static void DES() {
try {
// 以DES的⽅式初始化Key⽣成器
KeyGenerator keyGenerator = Instance("DES");
keyGenerator.init(56);// 设置密钥的长度为56位
// ⽣成⼀个Key
SecretKey generateKey = ateKey();
// 转变为字节数组
byte[] encoded = Encoded();
// ⽣成密钥字符串
String encodeHexString = deHexString(encoded);
System.out.println("Key : " + encodeHexString);
// 再把我们的字符串转变为字节数组,可以⽤于另⼀⽅使⽤,验证
byte[] decodeHex = Hex.CharArray());
/
/ ⽣成密钥对象
SecretKeySpec secretKeySpec = new SecretKeySpec(decodeHex, "DES");
// 获取加解密实例
Cipher cipher = Instance("DES/ECB/PKCS5Padding");
// 初始化加密模式
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
// 加密
byte[] doFinal = cipher.Bytes());
System.out.println("加密结果 : " + new HexBinaryAdapter().marshal(doFinal));
// 初始化解密模式
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
/
/ 解密
byte[] doFinal2 = cipher.doFinal(doFinal);
// 输出解密结果
System.out.println("解密结果 : " + new String(doFinal2));
} catch (Exception e) {
e.printStackTrace();
}
}
}
附上输出结果:
Key : 619b862f5e2aad40
加密结果 : D98FA80E83593710C0686370665C2FEC
解密结果 : Hello,sahadev!
以上就是java DES实现对称加密的实例,如有疑问请留⾔或者到本站社区交流讨论,感谢阅读,希望能帮助到⼤家,谢谢⼤家对本站的⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论