Java 使用 AES 256 和 128 对称密钥加密 [英] Java using AES 256 and 128 Symmetric-key encryption
问题描述
我是密码技术的新手.我发现这段代码是用来做对称加密的.
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屋!