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

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

问题描述

我在密码技术方面是新的。我发现这个代码做对称加密。

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

它的工作。这里我可以使用我自己的密码。这就是我需要什么。但我不知道如何做128或256对称Enctryption。
我如何在我的代码中使用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天全站免登陆