字符串加密 给你一串未加密的字符串str,通过对字符串的没有给字母进行改变
时间: 2023-08-01 19:03:22 浏览: 198
字符串加密可以通过各种算法和方法实现,下面我将介绍一种常见的加密方式:替换加密。
替换加密是一种简单的加密方式,它通过替换字符串中的每个字母来实现加密。具体步骤如下:
1. 定义一个替换表,将字母与其对应的替换字母进行配对。例如,将字母A替换为D,将字母B替换为E,依此类推。
2. 遍历待加密的字符串str的每个字符。
3. 判断当前字符是否为字母。如果是字母,则根据替换表找到对应的替换字母,并将其替换到加密后的字符串中。
4. 如果当前字符不是字母,则直接将其加入加密后的字符串中。
5. 遍历完所有字符后,得到加密后的字符串。
举例说明:假设替换表为A->D, B->E, C->F,待加密字符串为"HELLO"。
首先,遍历待加密字符串"HELLO"的第一个字符"H",根据替换表找到对应的替换字母"D",将其替换到加密后的字符串中,得到加密后的字符串"D"。
接着,遍历待加密字符串的剩余字符,根据替换表进行替换,得到加密后的字符串"IFMMP"。
最后得到的加密后的字符串为"IFMMP"。
需要注意的是,替换加密属于简单的加密方式,安全性较低。可以根据实际需求选择更加复杂的加密算法和方法来保护数据的安全性。
相关问题
Java aes 对字符串加密生成12位包含大写字母和数字的字符串,并能将加密后的字符串进行解密,相同字符串加密后值唯一
可以使用以下代码实现:
```java
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.security.MessageDigest;
import java.util.Base64;
public class AesUtil {
private static final String KEY = "123456789012"; // 密钥,必须是16位
public static String encrypt(String str) throws Exception {
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
SecretKeySpec secretKeySpec = new SecretKeySpec(KEY.getBytes(), "AES");
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
byte[] encrypted = cipher.doFinal(str.getBytes());
String base64Encoded = Base64.getEncoder().encodeToString(encrypted);
String md5 = md5(base64Encoded).substring(0, 12);
return md5;
}
public static String decrypt(String str) throws Exception {
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
SecretKeySpec secretKeySpec = new SecretKeySpec(KEY.getBytes(), "AES");
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
byte[] decrypted = cipher.doFinal(Base64.getDecoder().decode(str));
return new String(decrypted);
}
private static String md5(String str) throws Exception {
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] bytes = md.digest(str.getBytes());
StringBuilder sb = new StringBuilder();
for (byte b : bytes) {
sb.append(String.format("%02x", b));
}
return sb.toString();
}
}
```
使用方法:
```java
String str = "hello world";
String encrypted = AesUtil.encrypt(str);
System.out.println(encrypted); // 输出类似 "f7d2a2b5b7e5" 的字符串
String decrypted = AesUtil.decrypt(encrypted);
System.out.println(decrypted); // 输出 "hello world"
```
注意:由于加密后的字符串长度只有12位,所以可能存在重复的情况,但概率很小。如果需要更高的唯一性,可以将加密后的字符串长度增加到16位或更长。
6-2(函数2样例)函数-2-字符串加密分数9 全屏浏览题目切换布局 本题要求实现一个函数,对字符串进行加密。具体加密规则:将字符串中的英文字母替换为字母表中下一个字母,如a替换为b,A替换为B,但z替换为a,Z替换为A;将字符串中的数字字符替换为前一个数字,如9替换为8.1替换为0,但O替换为9;字符串中其余字符不变。例如原字符串为Hello,加密后变为lfmmp。 函数接口定义 void encrypt (char sl]); 其中s是用户传入的参数,表示待加密的字符串。 裁判测试程序样例: 2 void encrypt (char s[): 34 int main( ) 5 6 char str[50]; 7 gets(str) 8 encrypt(str); puts(str); 18 return 11
好的,这是一个关于字符串加密的问题。具体规则是将字符串中的英文字母替换为字母表中下一个字母,如a替换为b,A替换为B,但z替换为a,Z替换为A;将字符串中的数字字符替换为前一个数字,如9替换为8.1替换为0,但O替换为9;字符串中其余字符不变。你需要实现一个函数,对字符串进行加密。函数接口定义如下:
```c
void encrypt(char s[]);
```
其中`s`是用户传入的参数,表示待加密的字符串。请你完成这个函数的实现。
阅读全文