实现一个字符串加解密系统。 使用一个String对象passwd的字符序列作为密码,对另一个string对象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]) 上述加密算法的解密算法是对密文做减法运算。
时间: 2023-06-14 10:04:08 浏览: 85
以下是一个简单的字符串加解密系统的实现:
```java
public class StringEncryptor {
public static String encrypt(String passwd, String sourceStr) {
char[] p = passwd.toCharArray();
char[] source = sourceStr.toCharArray();
int n = p.length;
StringBuilder encrypted = new StringBuilder();
for (int i = 0; i < source.length; i += n) {
for (int j = 0; j < n && i + j < source.length; j++) {
char c = (char) (source[i + j] + p[j]);
encrypted.append(c);
}
}
return encrypted.toString();
}
public static String decrypt(String passwd, String encryptedStr) {
char[] p = passwd.toCharArray();
char[] encrypted = encryptedStr.toCharArray();
int n = p.length;
StringBuilder decrypted = new StringBuilder();
for (int i = 0; i < encrypted.length; i += n) {
for (int j = 0; j < n && i + j < encrypted.length; j++) {
char c = (char) (encrypted[i + j] - p[j]);
decrypted.append(c);
}
}
return decrypted.toString();
}
}
```
使用例子:
```java
String passwd = "password";
String sourceStr = "hello world";
String encryptedStr = StringEncryptor.encrypt(passwd, sourceStr);
System.out.println("Encrypted: " + encryptedStr);
String decryptedStr = StringEncryptor.decrypt(passwd, encryptedStr);
System.out.println("Decrypted: " + decryptedStr);
```
输出:
```
Encrypted: ªØûÚÚÞäÕ
Decrypted: hello world
```
阅读全文