Java字符串的加密解密

为了保证程序的安全,经常采用数据加密的方法。Java 中提供了专门用于加密运算的类和接口。

除了使用加密类和接口外,还可以通过多种方式实现字符串的加密。其中常用的就是获取字符串的字节数组,之后对字节数组中的每个字节都进行运算,得到新的内容,这时所获得的字符串与原字符串将不相同,以此达到加密的效果;解密时再将加密字符串进行相反的运算,这样即可得到原字符串。

本实例简单介绍如何通过数据运算实现字符串的加密和解密,实现步骤如下。

(1) 创建一个静态的 encryptAndDencrypt() 方法,在该方法中传入两个参数。代码如下:

 
  1. public static String encryptAndDencrypt(String value, char secret)
  2. {
  3. byte[] bt=value.getBytes(); //将需要加密的内容转换为字节数组
  4. for(int i=0;i<bt.length;i++)
  5. {
  6. bt[i]=(byte)(bt[i]^(int)secret); //通过异或运算进行加密
  7. }
  8. String newresult=new String(bt,0,bt.length); //将加密后的字符串保存到 newresult 变量中
  9. return newresult;
  10. }


上述代码首先将需要加密的内容转换为字节数组,接着遍历字节数组中的内容,在 for 语句中通过异或运算进行加密,然后将加密后的字符串保存到 newresult 变量中。最后返回 newresult 变量的值。

(2) 在 main() 方法中添加代码,接收用户在控制台输入的内容并输出,然后调用 encryptAndUncrypt() 方法对字符串分别进行加密和解密,并将加密和解密后的内容输出。代码如下:

 
  1. public static void main(String[] args)
  2. {
  3. Scanner scan=new Scanner(System.in);
  4. char secret='8'; //加密文字符
  5. System.out.println("请输入您想加密的内容:");
  6. String pass=scan.next();
  7. System.out.println("原字符串内容:"+pass);
  8. String encryptResult=encryptAndDencrypt(pass,secret);
  9. System.out.println("加密后的内容:"+encryptResult);
  10. String uncryptResult=encryptAndDencrypt(encryptResult,secret);
  11. System.out.println("解密后的内容:"+uncryptResult);
  12. }


(3) 执行上述代码进行测试,如下所示。

  1. 请输入您想加密的内容:
  2. hello,java
  3. 原字符串内容:hello,java
  4. 加密后的内容:P]TTWRYNY
  5. 解密后的内容:hello,java

猜你喜欢

转载自blog.csdn.net/jijiangpeng/article/details/94589432