成为“黑客”前,必学的“密码学原理”
哈希算法将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明文而且哪怕只更改该段落的一个字母,随后的哈希都将产生不同的值。要找到散列为同一个值的两个不同的输入,在计算上是不可能的,所以数据的哈希值可以检验数据的完整性。一般用于快速查找和加密算法。简单解释:哈希(Hash)算法,即散列函数。它是一种单向密码体制,即它是一个从明文到密文的不可逆的映射,只有加密过程,没有解密过程。同时,哈希函数可以将任意长度的输入经过变化以后得到固定长度的输出。哈希函数的这种单向特征和输出数据长度固定的特征使得它可以生成消息或者数据。 (1) MD5:MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有MD2、MD3和MD4。 MD5算法具有以下特点:
(2) 2SHA-256:安全哈希算法256位。SHA-1安全性比MD5稍高(160位VS128位),但算法需要时间SHA-1稍慢。 五、 密码分析详解 密码编码学的主要目的是保持明文(或者是密钥)的秘密并防止窃听者(也可以叫对手、攻击者、截取者、入侵者、敌人等)知晓。这里假设窃听者完全能够截获发送者和接收者之间的通信。 密码分析学是在不知道密钥的情况下,恢复明文的科学。成功的密码分析可以恢复消息的明文或者密钥。与此同时,密码分析也可以验证出密码体制的弱点,并最终恢复明文或者密钥。 对密码进行分析的尝试称为攻击(attack)。A.Kerckhoffs 早在19世纪就阐明了密码分析的一个基本假设,此假设就是秘密必须全寓于密钥中。Kerckhoffs假设密码分析者已知密码算法以及其实现的全部资料。虽然在实际的密码分析中并不总是拥有如此详细的信息,但理应如此假设。这样如果不能破译算法,那么即便了解算法是如何工作的也是徒然。当然,如果连算法的知识和相关资料都没有,那就肯定无法破译。 现我列出常用的七类密码分析攻击,在此假设每一类密码分析者都知道所用的加密算法的全部知识。
六、使用密码学教学常用工具CrypTool完成一次实例加解密过程 在这个实际场景中,将使用RC4算法创建一个简单的密码。然后将尝试使用暴力攻击解密它。在本练习中,假设我们知道加密密钥是24位。我们将使用此信息来破解密码。 1. 首先创建RC4流密码 我们将加密以下短语 "永远不要低估一个时间充裕且现金不足的孩子的决心" 我们将使用"00 00 00"作为加密密钥。 打开CrypTool (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |