逆向算法常识总结

1.消息摘要算法的主要特征是加密过程不需要密钥,并且经过加密的数据无法被解密,只有输入相同的明文数据经过相同的消息摘要算法才能得到相同的密文。著名的摘要算法有RSA公司的MD5算法和SHA-1算法及其大量的变体。

2.当公钥算法与摘要算法结合起来使用时,便构成了一种有效地数字签名方案。这个过程是:首先用摘要算法对消息进行摘要,然后在把摘要值用信源的私钥加密;接收方先把接收的明文用同样的摘要算法摘要,形成“准签体”,然后再把准签体与用信源的公钥解密出的“签体”进行比较,如果相同就认为消息是完整的,否则消息不完整。

3.具有保密机制的RSA签名的整个过程:

    (1)发送方选择一个对称加密算法(比如DES)和一个对称密钥对报文进行加密;
 (2)发送方用接收方的公钥和RSA算法对第1步中的对称密钥进行加密,并且将加密后的对称密钥附加在密文中;
    (3)发送方使用一个摘要算法从第2步的密文中得到报文摘要,然后用RSA算法和发送方的私钥对此报文摘要进行加密,这就是发送方的数字签名;
 (4)将第3步得到的数字签名封装在第2步的密文后,并通过网络发送给接收方;
 (5)接收方使用RSA算法和发送方的公钥对收到的数字签名进行解密,得到一个报文摘要;
   (6)接收方使用相同的摘要算法,从接收到的报文密文中计算出一个报文摘要;
 (7)如果第5步和第6步的报文摘要是相同的,就可以确认密文没有被篡改,并且是由指定的发送方签名发送的;
 (8)接收方使用RSA算法和接收方的私钥解密出对称密钥;

 (9)接收方使用对称加密算法(比如DES)和对称密钥对密文解密,得到原始报文。

4.对称加密(也叫私钥加密)指加密和解密使用相同密钥的加密算法。有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,同时解密密钥也可以从加密密钥中推算出来。

5.RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。

6.DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,DES算法的入口参数有三个:Key、Data、Mode。其中Key为7个字节共56位,是DES算法的工作密钥;Data为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。AES高级加密标准(英语:Advanced Encryption Standard,缩写:AES)

7.安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准 (Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。 SHA1有如下特性:不可以从消息摘要中复原信息;两个不同的消息不会产生同样的消息摘要。

8.DER(Distinguished Encoding Rules,可辨别编码规则)。PEM全称是Privacy?Enhanced?Mail,该标准定义了加密一个准备要发送邮件的标准,主要用来将各种对象保存成PEM格式,并将PEM格式的各种对象读取到相应的结构中。

9.数字摘要:是将任意长度的消息变成固定长度的短消息,它类似于一个自变量是消息的函数,也就是Hash函数。数字摘要就是采用单项Hash函数将需要加密的明文“摘要”成一串固定长度(128位)的密文这一串密文又称为数字指纹,它有固定的长度,而且不同的明文摘要成密文,其结果总是不同的,而同样的明文其摘要必定一致。

10.Windows下强行kill某一进程: taskkill /f /pid 2992。一般32位平台上的long都比较统一(基本上都是LP32),为32位,范围和int一致。

11.Zygote是 Android 的核心,每运行一个 app,Zygote 就会 fork 一个虚拟机实例来运行 app,Xposed Framework 深入到了 Android 核心机制中,通过改造 Zygote 来实现一些很牛逼的功能。Zygote 的启动配置在/init.rc 脚本中,由系统启动的时候开启此进程,对应的执行文件是/system/bin/app_process,这个文件完成类库加载及一些函数调用的工作。当系统中安装了 Xposed Framework 之后,会对 app_process 进行扩展,也就是说,Xposed Framework 会拿自己实现的 app_process 覆盖掉 Android 原生提供的 app_process 文件,当系统启动的时候,就会加载由 Xposed Framework 替换过的进程文件。

12.strtok()用来将字符串分割成一个个片段。参数s指向欲分割的字符串,参数delim则为分割字符串中包含的所有字符。当strtok()在参数s的字符串中发现参数delim中包含的分割字符时,则会将该字符改为\0 字符。在第一次调用时,strtok()必需给予参数s字符串,往后的调用则将参数s设置成NULL。每次调用成功则返回指向被分割出片段的指针。

13.strupr: 把数组中的字符串转换成大写并且返回。itoa功能:将任意类型的数字转换为字符串;strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。

14.HMAC是密钥相关的哈希运算消息认证码(Hash-based Message Authentication Code),HMAC运算利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。














    



你可能感兴趣的:(逆向算法常识总结)