概述
- 1.古典密码学
- 2.现代密码学
- 3.公钥密码学
- 4.哈希算法
- 5.比特币加密使用的函数的额外特征
- 6.区块链中的密码学
1.古典密码学
1949 年以前的密码学统称为古典密码学,安全基于加密算法的保密性。
2.现代密码学
以 1949 年香农的信息论的诞生为标志。
加密算法、解密算法同时用一套密钥。因此也叫「对称加密算法」
3.公钥密码学
需要两个密钥「公钥(Publickey」「私钥(Privatekey)」
用公钥进行加密后,只有对应的私钥能解密,
用私钥加密,只有对应公钥萌解密。
4.哈希算法
Hash Function 也称为散列函数,能计算出一个数字消息所对应的、长度固定的字符串(又称消息摘要)的算法。
主要特征
- 输入的 x 可以是任意长度的字符串
- 输出结果 H(x) 长度固定
- 计算 H(x) 的过程高效,对于长度为 n 的字符串,时间复杂度为 O(n)
5.比特币加密使用的函数的额外特征
- 免碰撞,当 x≠y 时,不会出现 H(x)=H(y)
- 隐匿性,不可能根据 H(x) 推算出 x
- 不存在比穷举更好的方法
6.区块链中的密码学
- (1) 椭圆曲线算法
比特币使用了基于secp256k1 椭圆曲线数学的公钥密码学算法。它包含私钥与公钥,交易发出方用私钥进行签名,并将签名与原始数据发送给整个比特币网络,网络中的所有节点则用公钥对交易有效性进行验证。签名算法保证了交易是由拥有对应私钥的人所发出的。
数据签名算法的核心在于证明数据是签名者发出的、不可抵赖的,而不是待签名数据本身的保密性。 - (2) SHA-256哈希算法
SHA(Secure Hash Algorithm)是一个密码散列函数家族。
包括SHA-1、SHA-224、SHA-256、SHA-384和SHA-512五种变体,主要适用于数字签名标准。后4个哈希函数又并称为SHA-2。 - (3) 对称加密算法
AES(Advanced Encryption Standard)是一个对称分组密码算法,是美国新的数据加密标准而被广泛应用在各个领域。其大致运作原理和前文的对称加密算法的流程相同。 - (4) Base58编码
编码算法的目的不是为了保护数据的安全性,而是为了可读性。
可读性编码不改变信息内容,只改变信息内容的表现形式,部分编码算法还加入了容错校验功能,以保证传输过程中数据的准确性和完整性。
Base58 主要用于产生比特币的钱包地址。相比 Base64 , Base58 不使用数字“0”、大写字母“O”、大写字母“I”和小写字母“l”,以及“+”和“/”符号。
设计Base58的主要目的是:
1)避免混淆。在某些字体下,数字0和大写字母O,以及大写字母I和小写字母l非常相似。
2)不使用“+”和“/”的原因是,非字母或数字的字符串作为账号的一部分被接受。
3)没有标点符号,通常不会被从中间分行。
4)大部分的软件支持双击选择整个字符串。
比特币使用了 Base58 算法来对公钥的 Hash160 及私钥进行编码,从而生成以 1 或 3 开头的比特币地址及WIF(Wallet Import Format)格式的私钥。