java 对字符串加密解密
在实际应用中,常常会遇到对数据进行加密、解密的工作,如对密码数据的保护或者对网络传输的数据进行保护。数据加密、解密需要非常复杂、高效的算法,所以通常对于一般的程序员是无法完成的工作。
加密解密算法分为两种:一是受限制的安全算法,即最初用于军方,对一些机密的数据进行加密,由于这种算法保密,所以使用率低。二是非受限的安全算法,即基于密钥的算法,并且算法都是公开的,所以使用率高,如图5-1所示。
图5-1 加密与解密
目前,常用的加密算法包括对称密钥加密算法(如DES、IDEA、3DES等),公开密钥加密算法(如RSA、ECC等)等。下面我们通过DES对称密钥进行加密,其详细方法如下。
操作步骤:
(1)分别导入security.Key、crypto.Cipher和crypto.KeyGenerator类包,并创建EncryptExample主类和主方法。
其中,security为安全框架提供类和接口,而key是所有密钥的顶层接口。crypto.Cipher为加密操作提供类和接口,而KeyGenerator提供(对称)密钥生成器的功能。
import java.security.Key;
pto.Cipher;
pto.KeyGenerator;
public class EncryptExample {
public static void main(String[] args) throws Exception {
(2)定义需要加密的字符串,并通过“byte[] message = Bytes( );”语句,将将字符串转化为一个字节数组。然后,通过创建String对象,显示这个字节数组中的内容。
String xinxi="加密码数据";
byte[] message = Bytes();
System.out.println("加密前的信息:" + new String(message));
(3)Instance("DES")是指选择的DES算法,生成一个KeyGenerator对象。而GenerateKey( )方法以重用一个对称算法实例使用不同的密钥。
KeyGenerator keyGen = Instance("DES");
Key key = ateKey();
System.out.println("得到key成功");
(4)Cipher对象实际完成加密操作,然后用密匙初始化Cipher对象。
Cipher cipher = Instance("DES");
cipher.init(Cipher.ENCRYPT_MODE, key);
密码字符串是什么
System.out.println("初始化加密器成功");
(5)doFinal(message)语句即用明文字符串计算密文,然后输出加密后的内容。
byte[] encrypt_message = cipher.doFinal(message);
System.out.println("加密成功");
System.out.println("加密后的信息:" + new String(encrypt_message));
(6)再初始化cipher对象,并通过密文计算明文,然后输出明文内容。
cipher.init(Cipher.DECRYPT_MODE, key);
byte[] result = cipher.doFinal(encrypt_message);
System.out.println("解密成功");
System.out.println("解密后的信息:" + new String(result));
}
}
(7)执行代码,将显示出原明文内容,然后通过加密后生成乱码密文。再通过密文,进行解密,并显示明白内容,如图5-2所示。
图5-2 加密与解密过程
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论