Java 使用 AES 256 和 128 对称密钥加密 [英] Java using AES 256 and 128 Symmetric-key encryption

查看:67
本文介绍了Java 使用 AES 256 和 128 对称密钥加密的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是密码技术的新手.我发现这段代码是用来做对称加密的.

byte[] key =//... 秘密字节序列byte[] dataToSend = ...Cipher c = Cipher.getInstance("AES");SecretKeySpec k = new SecretKeySpec(key, "AES");c.init(Cipher.ENCRYPT_MODE, k);byte[] encryptedData = c.doFinal(dataToSend);

它的工作.在这里我可以使用我自己的密码.而这正是我所需要的.但我不知道如何做 128 或 256 对称加密.如何在我的代码中使用 128 和 256 键?

解决方案

AES 使用 128 位模式还是 256 位模式取决于您的密钥的大小,其长度必须为 128 位或 256 位.通常,您不使用密码作为密钥,因为密码很少有您需要的确切长度.相反,您可以使用某些密钥派生函数从密码中派生出加密密钥.

非常简单的例子:用你的密码的 MD5 得到 128 位的密钥.如果你想要 256 位的密钥,你可以使用 SHA-256 来获得你密码的 256 位哈希.密钥派生函数通常会运行数百次这种哈希并使用额外的盐.查看http://en.wikipedia.org/wiki/Key_derivation_function了解详情.>

另请注意:要运行比 128 位更强的加密,您需要从 http://www.oracle.com/technetwork/java/javase/downloads/index.html.

I am new in cipher technology. I found this code to do Symmetric Encryption.

byte[] key = //... secret sequence of bytes
byte[] dataToSend = ...
Cipher c = Cipher.getInstance("AES");
SecretKeySpec k = new SecretKeySpec(key, "AES");
c.init(Cipher.ENCRYPT_MODE, k);
byte[] encryptedData = c.doFinal(dataToSend);

Its working. Here I can use my own password. And thats what exactly I needed. But I dont know how to do 128 or 256 Symmetric Enctryption. How can I use 128 and 256 key into my code ?

解决方案

Whether AES uses 128 or 256 bit mode depends on size of your key, which must be 128 or 256 bits long. Typically you don't use your password as a key, because passwords rarely have exact length as you need. Instead, you derive encryption key from your password by using some key derivation function.

Very simple example: take MD5 of your password to get 128-bit key. If you want 256-bit key, you can use SHA-256 to get 256-bit hash of your password. Key-derivation functions usually run this hashing several hundreds time and use extra salt as well. Check out http://en.wikipedia.org/wiki/Key_derivation_function for details.

Also note: to run encryption stronger than 128-bit you will need to download and install 'Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 6' from http://www.oracle.com/technetwork/java/javase/downloads/index.html.

这篇关于Java 使用 AES 256 和 128 对称密钥加密的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆