零基础学黑客,搜索公众号:白帽子左一
密码学基本简介
密码学(在西欧语文中,源于希腊语kryptós“隐藏的”,和gráphein“书写”)是研究如何隐密地传递信息的学科。
在现代特别指对信息以及其传输的数学性研究,常被认为是数学和计算机科学的分支,和信息论也密切相关。
著名的密码学者Ron Rivest解释道:“密码学是关于如何在敌人存在的环境中通讯”,自工程学的角度,这相当于密码学与纯数学的异同。
密码学是信息安全等相关议题,如认证、访问控制的核心。密码学的首要目的是隐藏信息的涵义,并不是隐藏信息的存在。密码学也促进了计算机科学,特别是在于电脑与网络安全所使用的技术,如访问控制与信息的机密性。密码学已被应用在日常生活:包括自动柜员机的芯片卡、电脑使用者存取密码、电子商务等等。
密码是通信双方按约定的法则进行信息特殊变换的一种重要保密手段。依照这些法则,变明文为密文,称为加密变换;变密文为明文,称为脱密变换。密码在早期仅对文字或数码进行加、脱密变换,随着通信技术的发展,对语音、图像、数据等都可实施加、脱密变换。
密码学的发展
第一个阶段是从古代到19世纪未——古典密码(classical cryptography)
第二个阶段从20世纪初到1949年——近代密码
第三个阶段从C.E.Shannon(香农)于1949年发表的划时代论文“The Communication Theory of Secret Systems”开始——现代密码
第四个阶段从1976年W.Diffie和M.Hellman创造性地发表了论文”New Directions in Cryptography”开始——公钥密码
对称和非对称算法
对称密码算法(Symmetric cipher):加密密钥和解密密钥相同,或实质上等同,即从一个易于推出另一个。又称传统密码算法(Conventional cipher)、秘密密钥算法或单密钥算法。DES、3DES、IDEA、AES
非对称密码算法(Asymmetric cipher):加密密钥和解密密钥不同,从一个很难推出另一个。又叫公钥密码算法(Public-key cipher)。其中的加密密钥可以公开,称为公开密钥(public key),简称公钥;解密密钥必须保密,称为私人密钥(private key),简称私钥。RSA、ECC、EIGamal
JS混淆
有些时候开发者为了保护劳动成果可以通过对javascript的变量名称和过程名称进行编码,从而起到混淆is代码的作用,通常使用eval函数进行混淆处理,该函数可以计算字符串,并执行其中的JS代码。
如,对进行16进制转换,然后使用eval函数进行读取
特点:通常在S脚本里使用eval与function函数进行混淆。
JS在线解混淆:http://www.atool.org/jscompression.php
JSFuck
JSFuck 是用6个字符[0(0!+来编写JavaScript程序,如下图所示,经过加密后便使用了[00!+进行编写,点击run this 可进行解密,或将密文放在浏览器的console控制台上进行解密。
JSFuck在线加解密:http://www.jsfuck.com/
Jother
Jother是一种运用于javascript语言中利用少量字符构造精简的匿名函数方法对于字符串进行的编码方式。其中8个少量字符包括:!+()[]{}。只用这些字符就能完成对任意字符串的编码(可以在浏览器的console控制台上直接解密)。例如0到9
aaencode
aaencode使用的表情符号对js代码进编码,可以直接在命令行中继续解码,或者在以下的链接网站进行解码。
加解密地址:http://utf-8.jp