红联Linux门户
Linux帮助

Linux命令行文本加密的小技巧

发布时间:2015-10-17 22:26:41来源:linux网站作者:AnSwEr不是答案

我在学习shell攻略时了解到了这个方法,感觉简单有趣,所以现在把它整理出来和大家分享。


ROT13文本编码
介绍

ROT13(回转13位,rotateby13places,有时中间加了个减号称作ROT-13)是一种简易的置换暗码。把 ROT13 称为“加密”是大方的,“文本模糊处理”更准确些。有时候它被用来隐藏文本中潜在的攻击内容。
原理

套用ROT13到一段文字上仅仅只需要检查字元字母顺序并取代它在13位之后的对应字母,有需要超过时则重新绕回26英文字母开头即可。A换成N、B换成O、依此类推到M换成Z,然后序列反转:N换成A、O换成B、最后Z换成M。只有这些出现在英文。因为移动的位数是可能的 26 个字符的一半,所以对文本再次执行这个算法,就恢复到了它最初的形式。


在命令行使用
tr命令

1. 功能: tr命令,其全称“Text Replacer”,该命令用于进行文本替换。从标准输入中通过替换或删除操作进行字符转换。 tr主要用于删除文件中控制字符或进行字符转换。

2. 选项:
-c 用字符串1中字符集的补集替换此字符集,要求字符集为ASCII。
-d 删除字符串1中所有输入字符。
-s 删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串。


实例

加密:

Linux命令行文本加密的小技巧

解密:

Linux命令行文本加密的小技巧


代码实现
具体代码

/*************************************************************************
> File Name: rot13.c
> Author: AnSwEr
> Mail: 1045837697@qq.com
> Created Time: 2015年08月18日 星期二 12时02分28秒
 ************************************************************************/

/*
* realize ROT13 by C
*/

#include<stdio.h>
#include<string.h>

#define MAXSIZE 1024

char *rot13(char * string,unsigned int len)
{
char *str = string;
int i;

for(i = 0;i < len - 1;i++)
{
if(str[i] >= 'a'&&str[i] <= 'z')
str[i] = 'a' + (str[i] - 'a' + 13) % 26;
if(str[i] >= 'A'&&str[i] <= 'Z')
str[i] = 'A' + (str[i] - 'A' + 13) % 26;
}

return str;
}

int main(void)
{
char str_old[MAXSIZE];
char *str_new;
unsigned int length;

printf("Please input your string you want to encrypt by ROT13:\n");
fgets(str_old,sizeof(str_old),stdin);
length = strlen(str_old);

/*encrypt*/
str_new=rot13(str_old,length);
printf("After encrypt,string is:\n");
fputs(str_new,stdout);

/*decrypt*/
length = strlen(str_new);
str_new=rot13(str_new,length);
if(strcmp(str_new,str_old) == 0)
printf("Decrypt successfully!\n");
else
printf("Decrypt failed!\n");
printf("After decrypt,string is:\n");
fputs(str_new,stdout);

return 0;
}


运行截图

Linux命令行文本加密的小技巧


如何使用DM-Crypt加密Linux文件系统?:http://www.linuxdiyf.com/linux/13268.html

如何在Linux中产生、加密或解密随机密码:http://www.linuxdiyf.com/linux/12291.html

Linux安全机制之文件加密解密:http://www.linuxdiyf.com/linux/12046.html

Linux关于文件加密的两种方法和详解:http://www.linuxdiyf.com/linux/8846.html