帮我用C语言写一个栅栏密码加密个人姓名
时间: 2023-05-12 09:04:09 浏览: 226
好的,以下是一个简单的栅栏密码加密个人姓名的C语言代码:
```c
#include <stdio.h>
#include <string.h>
void encrypt(char *name, int key) {
int len = strlen(name);
char encrypted[len];
int index = 0;
for (int i = 0; i < key; i++) {
for (int j = i; j < len; j += key) {
encrypted[index++] = name[j];
}
}
encrypted[index] = '\0';
printf("加密后的姓名为:%s\n", encrypted);
}
int main() {
char name[100];
int key;
printf("请输入要加密的姓名:");
scanf("%s", name);
printf("请输入栅栏数:");
scanf("%d", &key);
encrypt(name, key);
return 0;
}
```
输入要加密的姓名和栅栏数后,程序会输出加密后的姓名。注意,这个加密算法并不是很安全,只是一个简单的示例。
相关问题
帮我用c语言写一个栅栏加密,加密个人姓名拼音
好的,我可以回答这个问题。以下是一个简单的栅栏加密的 C 语言代码,可以加密个人姓名拼音:
```c
#include <stdio.h>
#include <string.h>
void encrypt(char *str, int key) {
int len = strlen(str);
char result[len];
int row = key, col = (len + key - 1) / key;
char matrix[row][col];
memset(matrix, ' ', sizeof(matrix));
int idx = 0;
for (int j = 0; j < col; j++) {
for (int i = 0; i < row; i++) {
if (idx < len) {
matrix[i][j] = str[idx++];
}
}
}
idx = 0;
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
result[idx++] = matrix[i][j];
}
}
result[len] = '\0';
printf("加密后的结果为:%s\n", result);
}
int main() {
char name[] = "zhangsan";
int key = 3;
printf("原始字符串为:%s\n", name);
encrypt(name, key);
return 0;
}
```
这个代码中,我们定义了一个 `encrypt` 函数,接受一个字符串和一个密钥作为参数。在函数中,我们首先计算出栅栏加密矩阵的行数和列数,然后将字符串填充到矩阵中。最后,我们按照列优先的顺序将矩阵中的字符取出,得到加密后的结果。
在 `main` 函数中,我们定义了一个字符串和一个密钥,然后调用 `encrypt` 函数进行加密。你可以将字符串和密钥替换成你自己的,来进行加密。
THE LONGEST DAY使用c语言代码栅栏密码加密解密
"THE LONGEST DAY"通常是指电影《最长的一天》,它与C语言编码中的栅栏密码加密解密不是一个直接关联的主题。栅栏密码是一种简单的替换式加密算法,在C语言中实现可能会涉及到字符串处理和字符数组操作。
加密栅栏密码的基本步骤如下:
1. 将明文行按照一定的行间距隔开,形成“栅栏”形状。
2. 每个格子里的字符替换成预先设定的字母表中的另一个字符(如Caesar Cipher中的位移)。
解密则是将经过上述步骤处理的密文恢复回原来的文本形式。
以下是一个非常基础的栅栏密码加密的C语言示例(假设每行间隔为2字符):
```c
#include <stdio.h>
#include <string.h>
char encrypt(char* text, int shift) {
int len = strlen(text);
char encrypted[len];
int i, j;
for (i = 0, j = 0; i < len; ++i) {
if ((j % 2) == 0) { // 如果是奇数行
encrypted[j++] = text[i] + shift;
} else { // 如果是偶数行
encrypted[j++] = text[i];
}
}
return encrypted;
}
char decrypt(char* encrypted, int shift) {
return encrypt(encrypted, -shift); // 解密时使用相反的位移
}
int main() {
char plain_text[] = "Hello, World!";
char shifted_text[50];
// 加密
int shift = 3;
shifted_text = encrypt(plain_text, shift);
// 输出加密后的结果
printf("Encrypted Text: ");
for (char c : shifted_text) {
printf("%c", c);
}
printf("\n");
// 解密
char decrypted_text[strlen(shifted_text)];
memcpy(decrypted_text, shifted_text, strlen(shifted_text));
decrypted_text = decrypt(decrypted_text, shift);
printf("Decrypted Text: ");
for (char c : decrypted_text) {
printf("%c", c);
}
printf("\n");
return 0;
}
```
阅读全文