帮我用c语言写一个栅栏加密,加密个人姓名拼音
时间: 2023-04-10 10:00:33 浏览: 98
好的,我可以回答这个问题。以下是一个简单的栅栏加密的 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` 函数进行加密。你可以将字符串和密钥替换成你自己的,来进行加密。