7、实现一个字符串加解密系统。 使用一个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]) 上述加密算法的解密算法是对密文做减法运算。 使用java语言实现完整代码
时间: 2023-06-13 14:06:56 浏览: 170
以下是一个简单的加解密系统的Java代码实现:
```java
public class EncryptDecryptSystem {
public static String encrypt(String passwd, String sourceStr) {
char[] p = passwd.toCharArray();
char[] s = sourceStr.toCharArray();
int n = p.length;
int len = s.length;
StringBuilder result = new StringBuilder();
for (int i = 0; i < len; i += n) {
for (int j = 0; j < n && i + j < len; j++) {
char c = (char)(s[i+j] + p[j]);
result.append(c);
}
}
return result.toString();
}
public static String decrypt(String passwd, String encryptedStr) {
char[] p = passwd.toCharArray();
char[] s = encryptedStr.toCharArray();
int n = p.length;
int len = s.length;
StringBuilder result = new StringBuilder();
for (int i = 0; i < len; i += n) {
for (int j = 0; j < n && i + j < len; j++) {
char c = (char)(s[i+j] - p[j]);
result.append(c);
}
}
return result.toString();
}
public static void main(String[] args) {
String passwd = "123456";
String sourceStr = "Hello, world!";
String encryptedStr = encrypt(passwd, sourceStr);
String decryptedStr = decrypt(passwd, encryptedStr);
System.out.println("Source string: " + sourceStr);
System.out.println("Encrypted string: " + encryptedStr);
System.out.println("Decrypted string: " + decryptedStr);
}
}
```
上述代码中,使用了两个静态方法encrypt()和decrypt()分别实现了加密和解密操作。其中,encrypt()方法接受两个参数:passwd表示密码字符串,sourceStr表示待加密的字符串。该方法将密码字符串转换为字符数组p,然后将待加密的字符串按照指定的规则进行加密,最终返回加密后的字符串。decrypt()方法与encrypt()方法类似,只是在加密的基础上进行了相反的操作,将密文进行解密,返回原始的字符串。
在main()方法中,我们使用了一个简单的例子来测试上述加解密系统的正确性。我们使用一个明文字符串"Hello, world!",以及一个密码字符串"123456"进行加密操作。加密后的结果为"Khoor.wruog!",然后我们再使用相同的密码对该密文进行解密,得到的结果应该与原始的明文字符串相同,也就是"Hello, world!"。