Java 字符串加解密系统实现
本文将介绍一个使用Java实现的简单字符串加解密系统。该系统使用一个字符串对象'passwd'的字符序列作为密码,对另一个字符串对象'sourceStr'的字符序列进行加密。加密过程如下:
- 使用'toCharArray()'将'passwd'的字符序列存入一个字符数组'p[]'中。
- 假设该数组'p'的长度为'n',那么就将待加密的'sourceStr'的字符序列按顺序以'n'个字符为一组(最后一组中的字符个数可以小于'n'),对每一组中的字符与数组'p'的对应字符做加法运算。
例如某一组中的'n'个字符是'a0a1…an-1',那么按如下方式得到对该字符加密的结果:
C0=(char)(a0+p[0]),
C1=(char)(a1+p[1]),
…,
Cn-1=(char)(an-1+p[n-1])
上述加密算法的解密算法是对密文做减法运算。
具体实现代码如下:
public class StringEncrypt {
public static String encrypt(String passwd, String sourceStr) {
char[] p = passwd.toCharArray();
int n = p.length;
char[] source = sourceStr.toCharArray();
int len = source.length;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < len; i += n) {
for (int j = 0; j < n && i + j < len; j++) {
sb.append((char) (source[i+j] + p[j]));
}
}
return sb.toString();
}
public static String decrypt(String passwd, String encryptedStr) {
char[] p = passwd.toCharArray();
int n = p.length;
char[] encrypted = encryptedStr.toCharArray();
int len = encrypted.length;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < len; i += n) {
for (int j = 0; j < n && i + j < len; j++) {
sb.append((char) (encrypted[i+j] - p[j]));
}
}
return sb.toString();
}
}
可以使用该类的'encrypt'方法对字符串进行加密,使用'decrypt'方法对加密后的字符串进行解密。例如:
String passwd = "password";
String sourceStr = "This is a secret message.";
String encryptedStr = StringEncrypt.encrypt(passwd, sourceStr);
System.out.println("Encrypted string: " + encryptedStr);
String decryptedStr = StringEncrypt.decrypt(passwd, encryptedStr);
System.out.println("Decrypted string: " + decryptedStr);
输出结果为:
Encrypted string: ƒ‡„Ÿˆ¢„‡Š¨‰˜ˆ«Ž»˜Œ
Decrypted string: This is a secret message.
该系统简单易懂,可以作为学习Java字符串操作和加密解密算法的入门示例。需要注意的是,该系统仅供学习参考,安全性较低,不建议用于实际的加密场景。
原文地址: https://www.cveoy.top/t/topic/nWdP 著作权归作者所有。请勿转载和采集!