精华内容
下载资源
问答
  • 密文的意思
    2018-07-22 19:48:52

    很头疼

    更多相关内容
  • 识别密文加密方式

    千次阅读 2022-03-07 16:18:42
    经常会遇到各种各样的加密算法、编码、混淆,每个算法都有其对应的特征,对于一些较小的网站,往往直接引用这些官方算法,没有进行魔改等其他操作,这种情况下,如果我们能熟悉常见算法的特征,通过密文就能猜测出...

    前言

    爬虫工程师在做加密参数逆向的时候,经常会遇到各种各样的加密算法、编码、混淆,每个算法都有其对应的特征,对于一些较小的网站,往往直接引用这些官方算法,没有进行魔改等其他操作,这种情况下,如果我们能熟悉常见算法的特征,通过密文就能猜测出使用的哪种算法、编码、混淆,将会大大提高工作效率!在 CTF 中通常也会有密码类的题目,掌握一些常见密文特征也是 CTFer 们必备的技能!

    本文将介绍以下编码和加密算法的特征:

    • 编码:Base 系列、Unicode、Escape、URL、Hex;

    • 算法:MD5、SHA 系列、HMAC 系列、RSA、AES、DES、3DES、RC4、Rabbit、SM 系列;

    • 混淆:Obfuscator、JJEncode、AAEncode、JSFuck、Jother、Brainfuck、Ook!、Trivial brainfuck substitution;

    • 其他:恺撒密码、栅栏密码、猪圈密码、摩斯密码、培根密码、维吉尼亚密码、与佛论禅、当铺密码。

    PS:常见加密算法原理以及在 Python 和 JavaScript 中的实现方法可参见 K 哥以前的文章:【爬虫知识】爬虫常见加密解密算法

    编码系列

    Base 系列编码

    Base64 是我们最常见的编码,除此之外,其实还有 Base16、Base32、Base58、Base85、Base100 等,他们之间最明显的区别就是使用了不同数量的可打印字符对任意字节数据进行编码,比如 Base64 使用了 64 个可打印字符(A-Z、a-z、0-9、+、/),Base16 使用了 16 个可打印字符(A-F、0-9),这里主要讲怎么快速识别,其具体原理可自行百度,Base 系列主要特征如下:

    • Base16:结尾没有等号,数字要多于字母; 

    • Base32:字母要多于数字,明文数量超过 10 个,结尾可能会有很多等号;

    • Base58:结尾没有等号,字母要多于数字;

    • Base64:一般情况下结尾都会有 1 个或者 2 个等号,明文很少的时候可能没有;

    • Base85:等号一般出现在字符串中间,含有一些奇怪的字符;

    • Base100:密文由 Emoji 表情组成。

    示例:

    编码类型示例一示例二
    明文01234567890administrators
    Base16303132333435363738393061646D696E6973747261746F7273
    Base32GAYTEMZUGU3DOOBZGA======MFSG22LONFZXI4TBORXXE4Y=
    Base58cX8j8pvGzppMKVbBNF5dFLUTN5XwM1yLoF
    Base64MDEyMzQ1Njc4OTA=YWRtaW5pc3RyYXRvcnM=
    Base850JP==1c70M3&rY@:X4hDJ=06Eaa'.EcV
    Base100🐧🐨🐩🐪🐫🐬🐭🐮🐯🐰🐧👘👛👤👠👥👠👪👫👩👘👫👦👩👪

    Unicode 编码

    Unicode 又称为统一码、万国码、单一码,是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。其主要特征如下:

    • 以 \u&# 或 &#x 开头,后面是数字加字母组合

    PS:\u 开头和 &#x 开头是一样的,都是 16 进制 Unicode 字符的不同写法,&# 则是 Unicode 字符 10 进制的写法,此外,&# 和 &#x 开头的,也称为 HTML 字符实体转换,字符实体是用一个编号写入 HTML 代码中来代替一个字符,在 HTML 中,某些字符是预留的,如果希望正确地显示预留字符,就必须在 HTML 源代码中使用字符实体。

    示例:

    编码类型示例一示例二
    明文12345admin
    Unicode\u0031\u0032\u0033\u0034\u0035\u0061\u0064\u006d\u0069\u006e

    Escape 编码

    Escape 编码又叫 %u 编码,Escape 编码就是字符对应 UTF-16BE 表示方式前面加 %u,Escape 不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: * @ - _ + . / ,其他所有的字符都会被转义序列替换。其主要特征如下:

    • 以 %u 开头,后面是数字加字母组合

    示例:

    编码类型示例一示例二
    明文K 哥爬虫我爱 Python
    EscapeK%u54E5%u722C%u866B%u6211%u7231Python

    URL / Hex 编码

    URL 和 Hex 编码的结果是一样的,不同的是当你用 URL 编码网址时是不会把 httphttps 关键字和 /?&= 等连接符进行编码的,而 Hex 编码则全部转化了,其主要特征如下:

    • 以 % 开头,后面是数字加字母组合

    编码类型示例
    明文https://www.kuaidaili.com/
    Unicodehttps://%77%77%77%2E%6B%75%61%69%64%61%69%6C%69%2E%63%6F%6D/
    Hex%68%74%74%70%73%3a%2f%2f%77%77%77%2e%6b%75%61%69%64%61%69%6c%69%2e%63%6f%6d%2f

    加密算法

    MD5

    MD5 实质是一种消息摘要算法,一个数据的 MD5 值是唯一的,同一个数据不可能计算出多个不同的 MD5 值,但是,不同数据计算出来的 MD5 值是有可能一样的,知道一个 MD5 值,理论上是无法还原出它的原始数据的,MD5 是最容易辨别的,主要特征如下:

    • 密文一般为 16 位或者 32 位,其中 16 位是取的 32 位第 9~25 位的值;

    • 组成方式为字母(a-f)和数字(0-9)混合,字母可以全部是大写或者小写。

    除了通过密文特征来判断以外,我们还可以搜索源代码,标准 MD5 的源码里是包含了一些特定的值的,没有这些特定值,就无法实现 MD5:

    • 0123456789ABCDEF0123456789abcdef

    • 1732584193-271733879-1732584194271733878

    PS:某些特殊情况下,密文的长度也有可能不止 16 位或者 32 位,有可能是在官方算法上有一些魔改,通常也是在 16 位的基础上,左右填充了一些随机字符串。

    示例:

    编码类型示例一示例二
    明文123456admin
    MD5
    (16 位小写)
    49ba59abbe56e0577a57a5a743894a0e
    MD5
    (16 位大写)
    49BA59ABBE56E0577A57A5A743894A0E
    MD5
    (32 位小写)
    e10adc3949ba59abbe56e057f20f883e21232f297a57a5a743894a0e4a801fc3
    MD5
    (32 位大写)
    E10ADC3949BA59ABBE56E057F20F883E21232F297A57A5A743894A0E4A801FC3

    SHA 系列

    SHA 是比 MD5 更安全一点的摘要算法,SHA 通常指 SHA 家族算法,分别是 SHA-1、SHA-2、SHA-3,其中 SHA-2 是 SHA-224、SHA-256、SHA-384、SHA-512 的并称,SHA-3 是 SHA3-224、SHA3-256、SHA3-384、SHA3-512、SHAKE128、SHAKE256 的并称,其名字的后缀的数字就代表了结果的大小(bit),注意,SHAKE 算法结果的大小并不是固定的,其他算法特征如下:

    • SHA-1:字母(a-f)和数字(0-9)混合,固定位数 40 位;

    • SHA-224/SHA3-224:字母(a-f)和数字(0-9)混合,固定位数 56 位;

    • SHA-256/SHA3-256:字母(a-f)和数字(0-9)混合,固定位数 64 位;

    • SHA-384/SHA3-384:字母(a-f)和数字(0-9)混合,固定位数 96 位;

    • SHA-512/SHA3-512:字母(a-f)和数字(0-9)混合,固定位数 128 位。

    示例:

    编码类型示例
    明文123456
    SHA-17c4a8d09ca3762af61e59520943dc26494f8941b
    SHA-2568d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92
    SHA3-256c888c9ce9e098d5864d3ded6ebcc140a12142263bace3a23a36f9905f12bd64a

    HMAC 系列

    HMAC 这种算法就是在 MD5、SHA 两种加密的基础上引入了秘钥,其密文也和 MD5、SHA 类似,密文的长度和使用的 MD5、SHA 算法对应密文的长度是一样的。特征如下:

    • HMAC-MD5:字母(a-f)和数字(0-9)混合,位数一般为 32 位;

    • HMAC-SHA-1:字母(a-f)和数字(0-9)混合,固定位数 40 位;

    • HMAC-SHA-224 / HMAC-SHA3-224:字母(a-f)和数字(0-9)混合,固定位数 56 位;

    • HMAC-SHA-256 / HMAC-SHA3-256:字母(a-f)和数字(0-9)混合,固定位数 64 位;

    • HMAC-SHA-384 / HMAC-SHA3-384:字母(a-f)和数字(0-9)混合,固定位数 96 位;

    • HMAC-SHA-512 / HMAC-SHA3-512:字母(a-f)和数字(0-9)混合,固定位数 128 位。

    HMAC 和 SHA、MD5 的密文都很像,当无法确定是否为 HMAC 时,可以通过其名称搜索到加密方法,如果传入了密钥 key,说明就是 HMAC,当然你也可以直接当做是 SHA 或 MD5 来解,解密失败时就得考虑是否有密钥,是否为 HMAC 了,在 JS 中,通常一个 HMAC 加密方法是这样写的:

    function HmacSHA1Encrypt(word, key) {
        return CryptoJS.HmacSHA1(word, key).toString();
    }

    示例(密钥 123456abcde):

    编码类型示例
    明文123456
    HMAC-MD5432bb95bb00005ddce4a1c757488ed95
    HMAC-SHA-137a04076b7736c44460d330ee0d00014428b175e
    HMAC-SHA-25650cb1345366df11140fb91b43caaf69627e3f5529705ddf6b0d0cae67986e585
    HMAC-SHA3-256b808ed9f66436e89fba527a01d1d6044318fea8599d9f39bfb6bec4843964bf3

    RSA

    RSA 加密算法是一种非对称加密算法,通过公钥加密结果,必须私钥解密。同样私钥加密结果,公钥可以解密,应用非常广泛,在网站中通常使用 JSEncrypt 库来实现,其最大的特征就是有一个设置公钥的过程,我们可以通过以下方法来快速初步判断是否为 RSA 算法:

    • 搜索关键词 new JSEncrypt()JSEncrypt 等,一般会使用 JSEncrypt 库,会有 new 一个实例对象的操作;

    • 搜索关键词 setPublicKeysetKeysetPrivateKeygetPublicKey 等,一般实现的代码里都含有设置密钥的过程。

    RSA 的私钥、公钥、明文、密文长度也有一定对应关系,也可以从这方面初步判断:

    私钥长度
    (Base64)
    公钥长度
    (Base64)
    明文长度密文长度
    4281281~5388
    8122161~117172
    15883921~245344

    AES、DES、3DES、RC4、Rabbit 等

    AES、DES、3DES、RC4、Rabbit 等加密算法的密文通常没有固定的长度,他们通常使用 crypto-js 来实现,比如 AES 加解密示例如下:

    CryptoJS = require("crypto-js")
    
    var key = CryptoJS.enc.Utf8.parse("0123456789abcdef");
    var iv = CryptoJS.enc.Utf8.parse("0123456789abcdef");
    
    function AESEncrypt(word) {
        var srcs = CryptoJS.enc.Utf8.parse(word);
        var encrypted = CryptoJS.AES.encrypt(srcs, key, {
            iv: iv,
            mode: CryptoJS.mode.CBC,
            padding: CryptoJS.pad.Pkcs7
        });
        return encrypted.toString();
    }
    
    function AESDecrypt(word) {
        var srcs = word;
        var decrypt = CryptoJS.AES.decrypt(srcs, key, {
            iv: iv,
            mode: CryptoJS.mode.CBC,
            padding: CryptoJS.pad.Pkcs7
        });
        return decrypt.toString(CryptoJS.enc.Utf8);
    }
    
    console.log(AESEncrypt("K哥爬虫"))
    console.log(AESDecrypt("nSk3wCd92s08sQ9N+VHNvA=="))

    在 crypto-js 中,也有一些特定的关键字,我们可以通过搜索这些关键字来快速定位到 crypto-js:

    • CryptoJScrypto-jsivmodepaddingcreateEncryptorcreateDecryptor

    • ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=0xffffffff0xffff

    定位到 CryptoJS 后,观察加密方法,比如 AES 就是 CryptoJS.AES.encrypt,DES 就是 CryptoJS.DES.encrypt,3DES 就是 CryptoJS.TripleDES.encrypt,注意他的 iv、mode、padding,拿下来就可以本地复现了。

    SM 系列

    SM 代表商密,即商业密码,是我国发布的一系列国产加密算法,SM 系列包括:SM1、SM2、SM3 、SM4、SM7、SM9,其中 SM1 和 SM7 的算法不公开,SM 系列算法在我国一些 gov 网站上有应用,有关国产加密算法 K 哥前期文章有介绍:《爬虫逆向基础,认识 SM1-SM9、ZUC 国密算法》,本文不再赘述。

    在 SM 的 JavaScript 代码中一般会存在以下关键字,可以通过搜索关键字定位:

    • SM2SM3SM4

    • FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFF

    • FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFC

    • 28E9FA9E9D9F5E344D5A9E4BCF6509A7F39789F515AB8F92DDBCBD414D940E93

    • abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789

    • getPublicKeyFromPrivateKeydoEncryptdoDecryptdoSignature

    混淆系列

    Obfuscator

    Obfuscator 就是混淆的意思,简称 OB 混淆,实战可参考 K 哥以前的文章:【JS 逆向百例】W 店 UA,OB 反混淆,抓包替换 CORS 跨域错误分析,OB 混淆具有以下特征:

    • 一般由一个大数组或者含有大数组的函数、一个自执行函数、解密函数和加密后的函数四部分组成;

    • 函数名和变量名通常以 _0x 或者 0x 开头,后接 1~6 位数字或字母组合;

    • 自执行函数,进行移位操作,有明显的 push、shift 关键字;

    一段正常的代码如下:

    function hi() {
      console.log("Hello World!");
    }
    hi();

    经过 OB 混淆后的结果:

    function _0x3f26() {
        var _0x2dad75 = ['5881925kTCKCP', 'Hello\x20World!', '600mDvfGa', '699564jYNxbu', '1083271cEvuvT', 'log', '18sKjcFY', '214857eMgFSU', '77856FUKcuE', '736425OzpdFI', '737172JqcGMg'];
        _0x3f26 = function () {
            return _0x2dad75;
        };
        return _0x3f26();
    }
    
    (function (_0x307c88, _0x4f8223) {
        var _0x32807d = _0x1fe9, _0x330c58 = _0x307c88();
        while (!![]) {
            try {
                var _0x5d6354 = parseInt(_0x32807d(0x6f)) / 0x1 + parseInt(_0x32807d(0x6e)) / 0x2 + parseInt(_0x32807d(0x70)) / 0x3 + -parseInt(_0x32807d(0x69)) / 0x4 + parseInt(_0x32807d(0x71)) / 0x5 + parseInt(_0x32807d(0x6c)) / 0x6 * (parseInt(_0x32807d(0x6a)) / 0x7) + -parseInt(_0x32807d(0x73)) / 0x8 * (parseInt(_0x32807d(0x6d)) / 0x9);
                if (_0x5d6354 === _0x4f8223) break; else _0x330c58['push'](_0x330c58['shift']());
            } catch (_0x3f18e4) {
                _0x330c58['push'](_0x330c58['shift']());
            }
        }
    }(_0x3f26, 0xaa023));
    
    function _0x1fe9(_0xa907e7, _0x410a46) {
        var _0x3f261f = _0x3f26();
        return _0x1fe9 = function (_0x1fe950, _0x5a08da) {
            _0x1fe950 = _0x1fe950 - 0x69;
            var _0x82a06 = _0x3f261f[_0x1fe950];
            return _0x82a06;
        }, _0x1fe9(_0xa907e7, _0x410a46);
    }
    
    function hi() {
        var _0x12a222 = _0x1fe9;
        console[_0x12a222(0x6b)](_0x12a222(0x72));
    }
    
    hi();

    JJEncode

    JJEncode、AAEncode、JSFuck 都是同一个作者,实战可参考 K 哥以前的文章:【JS 逆向百例】网洛者反爬练习平台第二题:JJEncode 加密,JJEncode 具有以下特征:

    • 大量 $_ 符号、大量重复的自定义变量;

    • 仅由 18 个符号组成:[]()!+,\"$.:;_{}~=

    正常的一段 JS 代码:

    alert("Hello, JavaScript" )

    经过 JJEncode 混淆(自定义变量名为 $)之后的代码:

    $=~[];$={___:++$,$$$$:(![]+"")[$],__$:++$,$_$_:(![]+"")[$],_$_:++$,$_$$:({}+"")[$],$$_$:($[$]+"")[$],_$$:++$,$$$_:(!""+"")[$],$__:++$,$_$:++$,$$__:({}+"")[$],$$_:++$,$$$:++$,$___:++$,$__$:++$};$.$_=($.$_=$+"")[$.$_$]+($._$=$.$_[$.__$])+($.$$=($.$+"")[$.__$])+((!$)+"")[$._$$]+($.__=$.$_[$.$$_])+($.$=(!""+"")[$.__$])+($._=(!""+"")[$._$_])+$.$_[$.$_$]+$.__+$._$+$.$;$.$$=$.$+(!""+"")[$._$$]+$.__+$._+$.$+$.$$;$.$=($.___)[$.$_][$.$_];$.$($.$($.$$+"\""+$.$_$_+(![]+"")[$._$_]+$.$$$_+"\\"+$.__$+$.$$_+$._$_+$.__+"(\\\"\\"+$.__$+$.__$+$.___+$.$$$_+(![]+"")[$._$_]+(![]+"")[$._$_]+$._$+",\\"+$.$__+$.___+"\\"+$.__$+$.__$+$._$_+$.$_$_+"\\"+$.__$+$.$$_+$.$$_+$.$_$_+"\\"+$.__$+$._$_+$._$$+$.$$__+"\\"+$.__$+$.$$_+$._$_+"\\"+$.__$+$.$_$+$.__$+"\\"+$.__$+$.$$_+$.___+$.__+"\\\"\\"+$.$__+$.___+")"+"\"")())();

    AAEncode

    JJEncode、AAEncode、JSFuck 都是同一个作者,实战可参考 K 哥以前的文章:【JS 逆向百例】网洛者反爬练习平台第三题:AAEncode 加密,AAEncode 具有以下特征:

    • 仅由日式表情符号组成

    正常的一段 JS 代码:

    alert("Hello, JavaScript" )

    经过 AAEncode 混淆之后的代码:

    ゚ω゚ノ= /`m´)ノ ~┻━┻   //*´∇`*/ ['_']; o=(゚ー゚)  =_=3; c=(゚Θ゚) =(゚ー゚)-(゚ー゚); (゚Д゚) =(゚Θ゚)= (o^_^o)/ (o^_^o);(゚Д゚)={゚Θ゚: '_' ,゚ω゚ノ : ((゚ω゚ノ==3) +'_') [゚Θ゚] ,゚ー゚ノ :(゚ω゚ノ+ '_')[o^_^o -(゚Θ゚)] ,゚Д゚ノ:((゚ー゚==3) +'_')[゚ー゚] }; (゚Д゚) [゚Θ゚] =((゚ω゚ノ==3) +'_') [c^_^o];(゚Д゚) ['c'] = ((゚Д゚)+'_') [ (゚ー゚)+(゚ー゚)-(゚Θ゚) ];(゚Д゚) ['o'] = ((゚Д゚)+'_') [゚Θ゚];(゚o゚)=(゚Д゚) ['c']+(゚Д゚) ['o']+(゚ω゚ノ +'_')[゚Θ゚]+ ((゚ω゚ノ==3) +'_') [゚ー゚] + ((゚Д゚) +'_') [(゚ー゚)+(゚ー゚)]+ ((゚ー゚==3) +'_') [゚Θ゚]+((゚ー゚==3) +'_') [(゚ー゚) - (゚Θ゚)]+(゚Д゚) ['c']+((゚Д゚)+'_') [(゚ー゚)+(゚ー゚)]+ (゚Д゚) ['o']+((゚ー゚==3) +'_') [゚Θ゚];(゚Д゚) ['_'] =(o^_^o) [゚o゚] [゚o゚];(゚ε゚)=((゚ー゚==3) +'_') [゚Θ゚]+ (゚Д゚) .゚Д゚ノ+((゚Д゚)+'_') [(゚ー゚) + (゚ー゚)]+((゚ー゚==3) +'_') [o^_^o -゚Θ゚]+((゚ー゚==3) +'_') [゚Θ゚]+ (゚ω゚ノ +'_') [゚Θ゚]; (゚ー゚)+=(゚Θ゚); (゚Д゚)[゚ε゚]='\\'; (゚Д゚).゚Θ゚ノ=(゚Д゚+ ゚ー゚)[o^_^o -(゚Θ゚)];(o゚ー゚o)=(゚ω゚ノ +'_')[c^_^o];(゚Д゚) [゚o゚]='\"';(゚Д゚) ['_'] ( (゚Д゚) ['_'] (゚ε゚+(゚Д゚)[゚o゚]+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ (c^_^o)+ (゚Д゚)[゚ε゚]+(゚ー゚)+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚Θ゚)+ (c^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ ((゚ー゚) + (o^_^o))+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚ー゚)+ (c^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚Θ゚)+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ ((o^_^o) +(o^_^o))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) - (゚Θ゚))+ (o^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (o^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ (c^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚ー゚)+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ (゚Θ゚)+ (゚Д゚)[゚o゚]) (゚Θ゚)) ('_');

    JSFuck

    JJEncode、AAEncode、JSFuck 都是同一个作者,实战可参考K哥以前的文章:【JS 逆向百例】网洛者反爬练习平台第四题:JSFuck 加密,JSFuck 具有以下特征:

    • 仅由 6 个符号组成:[]()!+

    正常的一段 JS 代码:

    alert(1)

    经过 JSFuck 混淆之后的代码类似于:

    [][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(+[![]]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]+(+(!+[]+!+[]+!+[]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([]+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]][([][[]]+[])[+!+[]]+(![]+[])[+!+[]]+((+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]+[])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]]](!+[]+!+[]+!+[]+[!+[]+!+[]])+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]])()((![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[+!+[]+[!+[]+!+[]+!+[]]]+[+!+[]]+([+[]]+![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[!+[]+!+[]+[+[]]])

    Jother

    Jother 混淆和 JSFuck 有点儿类似,唯一的区别就是密文比 JSFuck 多了 {},其解密方式和 JSFuck 是一样的,Jother 混淆现在不太常见了,也很难找到在线混淆之类的工具了,原作者有个在线页面也关闭了,不过仍然可以了解一下,Jother 混淆具有以下特征:

    • 仅由 8 个符号组成:[]()!+{}

    正常的一段代码:

    function anonymous() {
    return location
    }

    经过 Jother 混淆之后的代码类似于:

    [][(![]+[])[!![]+!![]+!![]]+({}+[])[+!![]]+(!![]+[])[+!![]]+(!![]+[])[+[]]][({}+[])[!![]+!![]+!![]+!![]+!![]]+({}+[])[+!![]]+({}[[]]+[])[+!![]]+(![]+[])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+({}[[]]+[])[+[]]+({}+[])[!![]+!![]+!![]+!![]+!![]]+(!![]+[])[+[]]+({}+[])[+!![]]+(!![]+[])[+!![]]]((!![]+[])[+!![]]+(!![]+[])[!![]+!![]+!![]]+(!![]+[])[+[]]+({}[[]]+[])[+[]]+(!![]+[])[+!![]]+({}[[]]+[])[+!![]]+({}+[])[!![]+!![]+!![]+!![]+!![]+!![]+!![]]+(![]+[])[!![]+!![]]+({}+[])[+!![]]+({}+[])[!![]+!![]+!![]+!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]+({}[[]]+[])[!![]+!![]+!![]+!![]+!![]]+({}+[])[+!![]]+({}[[]]+[])[+!![]])()

    Brainfuck

    Brainfuck 实际上是一种极小化的计算机语言,又称为 BF 语言,该语言以其极简主义着称,仅包含八个简单的命令、一个数据指针和一个指令指针,这种语言在爬虫领域也可以是一种反爬手段,可以视为一种混淆方式,虽然不常见🤔,这里给一个在线体验的网址:https://copy.sh/brainfuck/text.html ,感兴趣的同志可以深入研究一下,Brainfuck 具有以下特征:

    • 仅由 <>+-.[] 组成,大量的 +- 符号。

    正常的一段代码:

    alert("Hello, Brainfuck")

    经过 Brainfuck 混淆之后的代码类似于:

    --[----->+<]>-----.+++++++++++.-------.+++++++++++++.++.+[--->+<]>+.------.++[->++<]>.-[->+++++<]>++.+++++++..+++.[->+++++<]>+.------------.+[->++<]>.---[----->+<]>-.+++[->+++<]>++.++++++++.+++++.--------.-[--->+<]>--.+[->+++<]>+.++++++++.+[++>---<]>.+++++++.

    Ook!

    Ook! 和 Brainfuck 的原理都是类似的,只不过符号有差异,同样的,这种语言在爬虫领域也可以是一种反爬手段,可以视为一种混淆方式,虽然不常见🤔,在线体验的网址:https://www.splitbrain.org/services/ook ,Ook! 具有以下特征:

    • 完整 Ook!:仅由 3 种符号组成 Ook.Ook?Ook!

    • Short Ook!:仅由 3 种符号组成 .!?

    正常的一段代码:

    alert("Hello, Ook!")

    经过 Ook! 混淆之后的代码类似于:

    Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook? Ook. Ook? Ook! Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook? Ook. Ook? Ook! Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook? Ook. Ook? Ook! Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook? Ook. Ook? Ook! Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook? Ook. 

    Trivial brainfuck substitution

    Trivial brainfuck substitution 不是一种单一的编程语言,而是一大类编程语言,成员超过 20 个,前面提到的 Brainfuck、Ook! 都是其中的一员,在爬虫领域中,说实话这种稀奇古怪的混淆其实并不常见,但是在一些 CTF 中有可能会出现,作为爬虫工程师也可以了解了解😎,具体可以参考:https://esolangs.org/wiki/Trivial_brainfuck_substitution

    其他

    恺撒密码

    恺撒密码(Caesar cipher)又称为恺撒加密、恺撒变换、变换加密,它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是 3 的时候,所有的字母 A 将被替换成 D,B 变成 E,以此类推。这个加密方法是以罗马共和时期恺撒的名字命名的,当年恺撒曾用此方法与其将军们进行联系。

    根据偏移量的不同,还存在若干特定的恺撒密码名称:偏移量为10:Avocat(A→K);偏移量为13:ROT13;偏移量为-5:Cassis (K 6);偏移量为-6:Cassette (K 7)

    示例(偏移量 3):

    •明文字母表:ABCDEFGHIJKLMNOPQRSTUVWXYZ•密文字母表:DEFGHIJKLMNOPQRSTUVWXYZABC

    栅栏密码

    栅栏密码就是把要加密的明文分成 N 个一组,然后把每组的第 1 个字连起来,形成一段无规律的话。栅栏密码本身有一个潜规则,就是组成栅栏的字母一般不会太多,一般不超过 30 个。

    示例:明文为 THE LONGEST DAY MUST HAVE AN END。加密时,把将要传递的信息中的字母交替排成上下两行:

    T E O G S D Y U T A E N N

    H L N E T A M S H V A E D

    将下面一行字母排在上面一行的后边组合成密文:

    TEOGSDYUTAENN HLNETAMSHVAED

    栅栏密码还有一种变种,称为栅栏密码 W 型,它会先把明文类似 W 形状进行排列,然后再按栏目顺序 1-N,取每一栏的所有字符值,组成加密后密文,比如字符串 123456789,采用栏目数为 3 时,明文将采用如下排列: 

    1—5—9

    -2-4-6-8-

    –3—7–

    取每一栏所有字符串,组成加密后密文:159246837

    猪圈密码

    猪圈密码也称为朱高密码、共济会暗号、共济会密码或共济会员密码,是一种以格子为基础的简单替代式密码。只能对字母加解密并且符号无法复制,粘贴后会直接显示明文,即使使用符号,也不会影响密码分析,亦可用在其它替代式的方法。曾经是美国内战时盟军使用的密码,目前仅在密码教学、各种竞赛中使用。

    摩斯密码

    摩斯密码(Morse code),又称为摩尔斯电码、摩斯电码,是一种时通时断的信号代码,这种信号代码通过不同的排列顺序来表达不同的英文字母、数字和标点符号等。

    26个字母的摩斯密码表

    字符摩斯码字符摩斯码字符摩斯码
    A.━B━ ...C━ .━ .
    D━ ..EF..━ .
    G━ ━ .H....I..
    J.━ ━ ━K━ .━L.━ ..
    M━ ━N━ .O━ ━ ━
    P.━ ━ .Q━ ━ .━R.━ .
    S...TU..━
    V...━W.━ ━X━ ..━
    Y━ .━ ━Z━ ━ ..

    10个数字的摩斯密码表

    字符摩斯码字符摩斯码字符摩斯码
    0━ ━ ━ ━ ━1.━ ━ ━ ━2..━ ━ ━
    3...━ ━4....━5.....
    6━ ....7━ ━ ...8━ ━ ━ ..
    9━ ━ ━ ━ .

    标点符号的摩斯密码表

    字符摩斯码字符摩斯码字符摩斯码
    ..━ .━ .━:━ ━ ━ ...,━ ━ ..━ ━
    ;━ .━ .━ .?..━ ━ ..=━ ...━
    '.━ ━ ━ ━ ./━ ..━ .!━ .━ .━ ━
    ━ ....━_..━ ━ .━".━ ..━ .
    (━ .━ ━ .)━ .━ ━ .━$...━ ..━
    &. ...@.━ ━ .━ .

    培根密码

    培根密码,又名倍康尼密码(Bacon's cipher)是由法兰西斯·培根发明的一种隐写术,它是一种本质上用二进制数设计的,没有用通常的0和1来表示,而是采用a和b,看到一串的a和b,并且五个一组,那么就是培根加密了。

    第一种方式:

    字符培根密码字符培根密码字符培根密码字符培根密码
    AaaaaaHaabbbOabbbaVbabab
    BaaaabIabaaaPabbbbWbabba
    CaaabaJabaabQbaaaaXbabbb
    DaaabbKababaRbaaabYbbaaa
    EaabaaLababbSbaabaZbbaab
    FaababMabbaaTbaabb
    GaabbaNabbabUbabaa

    第二种方式:

    字符培根密码字符培根密码字符培根密码字符培根密码
    aAAAAAhAABBBpABBBAxBABAB
    bAAAABi-jABAAAqABBBByBABBA
    cAAABAkABAABrBAAAAzBABBB
    dAAABBlABABAsBAAAB
    eAABAAmABABBtBAABA
    fAABABnABBAAu-vBAABB
    gAABBAoABBABwBABAA

    示例:

    •明文:kuaidaili•密文:ABABABABAAAAAAAABAAAAAABBAAAAAABAAAABABBABAAA

    维吉尼亚密码

    维吉尼亚密码是在凯撒密码基础上产生的一种加密方法,它将凯撒密码的全部25种位移排序为一张表,与原字母序列共同组成26行及26列的字母表。另外,维吉尼亚密码必须有一个密钥,这个密钥由字母组成,最少一个,最多可与明文字母数量相等。维吉尼亚密码表如下:

    示例:

    •明文:I've got it.•密钥:ok•密文:W'fs qcd wd.

    首先,密钥长度需要与明文长度相同,如果少于明文长度,则重复拼接直到相同。示例的明文长度为8个字母(非字母均被忽略),密钥会被程序补全为 okokokok,然后根据维吉尼亚密码表进行加密:明文第一个字母是 I,密钥第一个字母是 o,在表格中找到 I 列与 o 行相交点,字母 W 就是密文第一个字母,同理,v 列与 k 行交点字母是 Fe 列与 o 行交点字母是 S,以此类推。注意:维吉尼亚密码只对字母进行加密,不区分大小写,若文本中出现非字母字符会原样保留,如果输入多行文本,每行是单独加密的。

    与佛论禅

    字符串转换后,是一些佛语,在线体验:https://keyfc.net/bbs/tools/tudoucode.aspx

    示例:

    •明文:K哥爬虫•密文:佛曰:哆室梵阿俱顛哆礙孕奢大皤帝罰藝哆伽密謹爍舍呐栗皤夷密

    当铺密码

    当铺密码在 CTF 比赛题目中出现过。该加密算法是根据当前汉字有多少笔画出头,对应的明文就是数字几。

    示例:

    •明文:王夫 井工 夫口 由中人 井中 夫夫 由中大•密文:67 84 70 123 82 77 125

    展开全文
  • 明文、密文和报文

    千次阅读 2020-05-27 15:54:59
    密文:加密文本,明文是加密前的文本。密文是用明文加密的信息,主要是为了保护数据不被非法人窃取、阅读的目的。 报文:HTTP应用程序之间发送的数据块。 这些数据块以一些文本形式的元信息开头,这些信息描述了报文...

    明文:可以直观理解的未加密文本(或字符串)。
    密文:加密文本,明文是加密前的文本。密文是用明文加密的信息,主要是为了保护数据不被非法人窃取、阅读的目的。
    报文:HTTP应用程序之间发送的数据块。
    这些数据块以一些文本形式的元信息开头,这些信息描述了报文的内容及含义,后面跟着可选的数据部分。
    报文都是在客户端、服务器和代理之间流动。

    常见的加密算法可参考:

    https://blog.csdn.net/L835311324/article/details/81540641

    需要注意的是,加密的验证应该是非常严谨的,对于数据要做到双方一致的统一

    一个在线校验MD5和json等的网站:

    https://www.bejson.com/

    展开全文
  • 内容如下: idHash=ZjJm^J (用tcpdump搞到的)
  • 什么是明文? ... 什么是密钥?...这是明文与密钥配合加密算法加密之后的结果。...什么是密文?...密文是对明文加密之后所呈现的字符。如“nk123",按照加密算法加密之后得到的密文可能是*sgfag*=。...z:密文

    学习密码的同学会经常遇到如下几个词,我为大家通俗易懂的解释下。

    什么是明文?

    明文指的就是想要设置的密码字符,如:"nk123"。

    什么是密钥?

    密钥是用来对明文进行加密和解密用的,可以理解为是与明文配合使用进行对密码加密使用的。因为为了安全性,密码最终呈现是***这种。这是明文与密钥配合加密算法加密之后的结果。

    什么是密文?

    密文是对明文加密之后所呈现的字符。如“nk123",按照加密算法加密之后得到的密文可能是*sgfag*=。

    所以通过一个公式来表示:z = f(x,y);

    z:密文

    f:加密算法

    x:明文

    y:密钥

     

    展开全文
  • 原标题:「每日一练」Python实现明文和密文的输入输入框是很多程序都不可缺少的,而且输入的时候也有明文和密文很多形式的输入,尤其是账户登录的时候,是绝对要用到的,那么你知道Python如何实现明文和密文的输入吗...
  • 明文,bai是指没有加密的文字(du或者字符串),一般人都能看zhi懂的意思,在通信系dao统中它可能是比特流,如文本、位图、数字化的语音或者数字化的视频图像等。密文是加了密的的文字,明文是加密之前的文字。密文...
  • 在zookeeper中,我们添加一个节点时,通常要赋予节点ACL权限,...然而,有时需要控制一下节点的访问权限,此时的scheme就应该是digest而不是word,此时就需要使用密文,这个时候就需要使用上面的AclUtils工具转换一下。
  • Android 密码明文转密文失效

    千次阅读 2021-11-09 18:25:51
    Android 密码明文转密文失效。今天做了密码明文密文的状态转换,明文转密文老是不成功。
  • 密码学由置换求明密文

    千次阅读 2021-06-12 18:28:49
    (1)设明文=642135,求出密文。 (2)设密文=214365,求出明文。 注意:置换是位置的置换,而不是数据的置换。 不要被123456迷惑了你的双眼,我们不管它是什么,我们直接看位置 位置 1 2 3 4 5 6 换前 1 2 3 4 5 6 ...
  • 【什么叫明文,什么叫密文,为什么不允许在数据库里明文保存密码?】 每篇分享文从 【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】 八个方面深度解析后端...
  • 3. end=' '意思是末尾不换行,加空格。 4.range()函数 语法range(start, end, scan) 计数从start开始,默认值为0,从end结束,scan为每次跳跃的间距,默认值为1。 5.open(文件名,模式) 方法用于打开一个文件,并...
  • Obfuscator Obfuscator 就是混淆的意思,简称 OB 混淆,实战可参考 K 哥以前的文章:【JS 逆向百例】W 店 UA,OB 反混淆,抓包替换 CORS 跨域错误分析,OB 混淆具有以下特征: 一般由一个大数组或者含有大数组的函数...
  • 密文全文搜索技术的研究开发和应用张留学[1] 张焕中[2]1. 引言信息技术的飞速发展,对信息的安全提出了很高的要求,如何实现信息安全,从信息的安全存储,安全传输到信息的安全检索,是云计算时代必须面临的挑战。...
  • 密文传输,就是加密以后在传送,比如加密后变成abcdef,对方收到后还需要解密还原成:123456; 因此密文安全性高,但是对系统要求也会高些。 Flex根据明文和密钥,采用DES加密算法进行加密,生成密文: ...
  • 解题要点:题目中说“要考虑密码的所有排列可能性”,这句话的意思就是只要S子串与当前预支匹配的密码串中各个字母出现的个数相同,那么就算匹配成功 C++代码: #include #include #include #define ...
  • ask.csdn.net 意外终止了连接,如果不是密文开发吗,那是什么样开发
  • 密文验证: #int s1/0 #ip ospf message-digest-key 1 md5 ccie #area 0 authentication messate-digest 备注:实际中会发现环回口无法与网络正常连接,是因为子网掩码不一样,OSPF 路由器将环回口的网络类型认为...
  • 下图报错的大致意思为sa用户systemanonymous没有权限对jenkins命名空间下的pod进行操作,奇怪的是我yaml中明明已经指定了sa用户jenkins-sa,并且jenkins-sa是绑定的cluster-admin角色,按理说不可能对某个命名空间下...
  • 一、背景 后台管理系统... 三、解决密文作为参数传输到后台时+号变成空格的问题 用encrypt.encrypt()加密后生成的密文字符串中带有加号,如下 Q3Q+ZijLMjcKyC1whAzxtfVpy7G+N1kpCGQJYO8dISQ1UyEzczC6vdqbwG18K6ylTv2...
  • [Java教程]input输入密码变黑点密文0 2017-01-09 12:00:09input输入密码加密html代码 输入密码 Submitjs代码function checkForm() { var input_pwd = document.getElementById('input-password'); var md5_pwd = ...
  • 微信退款异步通知密文解码

    千次阅读 2020-04-10 10:43:50
    我们对一笔微信退款是否成功除了查询以外,还有最保险的一种模式就是对通知的解析,但是微信退款通知居然是密文模式的。 我们要根据他的要求解密出来以后才可以解析。那么先拿到通知吧。 二、接收通知 三、解析...
  • RSA公钥文件解密密文的原理分析前言最近在学习 RSA 加解密过程中遇到一个这样的难题:假设已知 publickey 公钥文件和加密后的密文 flag ,如何对其密文进行解密,转换成明文~~分析对于 rsa 算法的公钥与私钥的产生,...
  • #多次怀疑问题,其实我也是不知道什么意思,应该是多次验证,反正不知道什么意思都带着 }, cookies = r1.cookies.get_dict() #还要带着从第一次请求网站得到的cookie值 ) print(r2.text) #打印第二次网址 ...
  • 最近在做项目中,我的项目中用到了明文和密文之间的相互切换。以及语言的国际化处理。 Edittext 中的明文和密文切换有两种方式: 第一种方式: //这句话是代表是显示明文密码 etPassword.setInputType(Input...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,026
精华内容 4,010
热门标签
关键字:

密文的意思