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

时间:2022-04-18 17:39:25

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

我在学习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 删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串。

实例

  1. 加密:
    Linux命令行文本加密的小技巧
  2. 解密:
    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命令行文本加密的小技巧

反馈与建议