用c++帮我写一个字符加密
时间: 2023-04-01 09:04:42 浏览: 81
好的,我可以帮您写一个字符加密程序。您需要输入一个字符串和一个密钥,程序将使用密钥对字符串进行加密,并输出加密后的结果。以下是示例代码:
```
#include <stdio.h>
#include <string.h>
void encrypt(char *str, char *key) {
int len = strlen(str);
int keylen = strlen(key);
for (int i = ; i < len; i++) {
str[i] = str[i] + key[i % keylen];
}
}
int main() {
char str[100], key[100];
printf("请输入要加密的字符串:");
scanf("%s", str);
printf("请输入密钥:");
scanf("%s", key);
encrypt(str, key);
printf("加密后的结果为:%s\n", str);
return ;
}
```
这个程序使用了简单的加密算法,即将字符串中每个字符与密钥中对应位置的字符相加。如果密钥比字符串短,程序会循环使用密钥中的字符。请注意,这个加密算法并不安全,仅用于演示目的。
相关问题
用c++帮我写一个字符加密,只让输入字母,加密后的密文就是这个字母后四位的那个字母
好的,我可以回答这个问题。以下是一个简单的 C 代码,可以实现字符加密功能:
```c
#include <stdio.h>
int main() {
char c;
printf("请输入一个字母:");
scanf("%c", &c);
if (c >= 'a' && c <= 'z') {
c = (c - 'a' + 4) % 26 + 'a';
} else if (c >= 'A' && c <= 'Z') {
c = (c - 'A' + 4) % 26 + 'A';
}
printf("加密后的密文为:%c\n", c);
return ;
}
```
这个程序会让用户输入一个字母,然后将这个字母加密成它后面四位的字母。如果输入的是小写字母,加密后的字母也是小写字母;如果输入的是大写字母,加密后的字母也是大写字母。
帮我写一段用AES加密字符串的C++代码
### 回答1:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <openssl/aes.h>
int main(int argc, char *argv[])
{
//要加密的字符串
unsigned char key[] = "0123456789abcdef";
unsigned char iv[] = "1234567890abcdef";
//字符串
unsigned char* plaintext = "Hello World!";
//加密字符串
unsigned char ciphertext[128];
int ciphertext_len;
//加密
AES_KEY aes;
AES_set_encrypt_key(key, 128, &aes);
AES_cbc_encrypt(plaintext, ciphertext, strlen(plaintext), &aes, iv, AES_ENCRYPT);
ciphertext_len = strlen(plaintext);
//输出加密后的十六进制字符串
int i;
for(i=0; i<ciphertext_len; ++i)
{
printf("%02x", ciphertext[i]);
}
printf("\n");
return 0;
}
### 回答2:
使用AES对字符串进行加密的C代码如下所示:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <openssl/aes.h>
void encryptString(const unsigned char *key, const unsigned char *iv, const unsigned char *plaintext, unsigned char *ciphertext) {
AES_KEY aesKey;
AES_set_encrypt_key(key, 128, &aesKey);
AES_cbc_encrypt(plaintext, ciphertext, strlen(plaintext), &aesKey, iv, AES_ENCRYPT);
}
int main() {
unsigned char plaintext[100] = "Hello, world!";
unsigned char key[17] = "0123456789abcdef";
unsigned char iv[17] = "fedcba9876543210";
unsigned char ciphertext[100];
encryptString(key, iv, plaintext, ciphertext);
printf("Ciphertext: %s\n", ciphertext);
return 0;
}
```
上述代码中,我们使用了OpenSSL中的AES库来进行加密操作。首先,我们定义了一个函数`encryptString`,该函数接受一个密钥`key`、初始化向量`iv`、明文`plaintext`和一个用于接收密文的缓冲区`ciphertext`。在函数内部,我们首先调用`AES_set_encrypt_key`函数设置AES加密所需的密钥,并指定密钥长度为128位。然后,我们调用`AES_cbc_encrypt`函数对明文进行加密,得到密文结果。
在主函数中,我们定义了一个明文字符串`"Hello, world!"`、一个16字节的密钥以及一个16字节的初始化向量。然后,我们调用`encryptString`函数对明文进行加密,并将加密结果打印出来。
请注意,为了使用上述代码,你需要在编译时链接OpenSSL库。具体的编译命令可能因操作系统和编译器而有所不同。
### 回答3:
当然可以帮你写一个使用AES加密字符串的C代码。下面是一个简单的示例代码:
```c
#include <stdio.h>
#include <string.h>
#include <openssl/aes.h>
void encryptAES(const unsigned char *plaintext, unsigned char *ciphertext, const unsigned char *key) {
AES_KEY aesKey;
AES_set_encrypt_key(key, 128, &aesKey);
AES_encrypt(plaintext, ciphertext, &aesKey);
}
void decryptAES(const unsigned char *ciphertext, unsigned char *plaintext, const unsigned char *key) {
AES_KEY aesKey;
AES_set_decrypt_key(key, 128, &aesKey);
AES_decrypt(ciphertext, plaintext, &aesKey);
}
int main() {
const unsigned char *plainText = "Hello, World!";
unsigned char cipherText[128];
unsigned char decryptedText[128];
const unsigned char *key = "0123456789abcdef";
encryptAES(plainText, cipherText, key);
decryptAES(cipherText, decryptedText, key);
printf("Original Text: %s\n", plainText);
printf("Decrypted Text: %s\n", decryptedText);
return 0;
}
```
这个代码使用了OpenSSL库来实现AES加密和解密。首先,我们定义了两个函数`encryptAES`和`decryptAES`,分别用于加密和解密字符串。在主函数中,首先定义了一个明文(`plainText`),加密后的密文(`cipherText`)和解密后的明文(`decryptedText`)。然后,定义了AES加密的密钥(`key`)。接下来,我们分别调用`encryptAES`和`decryptAES`函数来加密和解密字符串。最后,将原始文本和解密后的文本打印出来。