区块链原理之密码技术(一)| 技术帖

本文不对区块链,或者说比特币进行概况性的介绍,而是讲述区块链所必须使用的密码技术原理。

区块链原理之密码技术(一)| 技术帖

作者 蔡菜子

前言:

由于近来区块链概念的大火,使我认真阅读完Andreas M Antonopoulos大神的《精通⽐特币第二版》一书,按照我的阅读理解,比特币技术没有什么颠覆性的技术革新,它更多的是前人技术的叠加,然后利用了人性贪婪这一特性而形成链式效应,最后成功。本文不对区块链,或者说比特币进行概况性的介绍,而是讲述区块链所必须使用的密码技术原理。由于水平有限,希望能够写明白。

第一章 什么是密码技术

我们举个例子,小强要发一份电子邮件给小红,电子邮件的内容是:“今天晚上6点,天河城吃饭,不见不散!”,但是网络中一个的黑客小白,也是小强的情敌,他利用网络抓包工具窃听小强与小红的网络链路,截取了邮件内容。如下图:

那么,小白提前知道了小强与小红的约会,他就可以做很多事,至于做什么事就不在本文讨论的范围了。小强如何防止让小白知道他的约会呢?有一个办法,把“今天晚上6点,天河城吃饭,不见不散!”这句话加密,让小白截取了也看不明白,然后与小红预先约定的密码,小红收到加密的信息后使用预先约定的密码解密,还原出“今天晚上6点,天河城吃饭,不见不散!”这个约会。如下图:

这是一个最简单的加解密模型,小强通过AES算法,以及他和小红约定的密码(密码是他们两个人的生日连接,如“1999111120000520”),这个密码在计算机术语就叫密钥,AES算法就是一种数学运算规则,我们把密钥和算法称为密码技术。

由于小白不知道他们之间的密钥“1999111120000520”,所以他拿到的是:

k0oj5cPNQQAoqkqKHC4d94kBEyczzYd8+IPpNfVDnDa3un1weqcz17mYsvOeIQ6aMxA5+ulF3xviiaJrEtfW6w==

这一串加密的文本,无法解密,所以不知道内容是什么,而小红拿到了这一串加密的文本后,通过密钥“1999111120000520”及AES算法解密,就可以还原出加密前的内容:

“今天晚上6点,天河城吃饭,不见不散!”

下面通过python语言,实现这一过程的代码,注意你的计算机要导入pyCryptodome模块,如果你对编程没有兴趣,以下内容可以跳过不看

# -*- coding: utf-8 -*-

from Crypto.Cipher import AES

import base64 

def Addtext(Emailtext):

    while len(Emailtext.encode(‘utf-8’)) % 16 != 0:

        Emailtext += ‘/0’

    return str.encode(Emailtext)

key = ‘1999111120000520’

text = ‘今天晚上6点,天河城吃饭,不见不散!’

aes = AES.new(str.encode(key), AES.MODE_ECB)

encrypted_text = str(base64.encodebytes(aes.encrypt(Addtext(text))),encoding=’utf8′).replace(‘/n’, ”)

decrypted_text = str(aes.decrypt(base64.decodebytes(bytes(encrypted_text,encoding=’utf8′))).rstrip(b’/0′).decode(“utf8”))

print(‘加密文本:’, encrypted_text)

print(‘解密文本:’, decrypted_text)

代码运行结果

加密文本: k0oj5cPNQQAoqkqKHC4d94kBEyczzYd8+IPpNfVDnDa3un1weqcz17mYsvOeIQ6aMxA5+ulF3xviiaJrEtfW6w==

解密文本: 今天晚上6点,天河城吃饭,不见不散!

Process finished with exit code 0

————————————————

版权声明:本文为CSDN博主「蔡菜子」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/cd4836/article/details/103176113

转载声明:本文 由CoinON抓取收录,观点仅代表作者本人,不代表CoinON资讯立场,CoinON不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。若以此作为投资依据,请自行承担全部责任。

声明:图文来源于网络,如有侵权请联系删除

风险提示:投资有风险,入市需谨慎。本资讯不作为投资理财建议。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 2019年11月24日 下午12:37
下一篇 2019年11月24日 下午12:38

相关推荐

区块链原理之密码技术(一)| 技术帖

星期日 2019-11-24 12:37:59

区块链原理之密码技术(一)| 技术帖

作者 蔡菜子

前言:

由于近来区块链概念的大火,使我认真阅读完Andreas M Antonopoulos大神的《精通⽐特币第二版》一书,按照我的阅读理解,比特币技术没有什么颠覆性的技术革新,它更多的是前人技术的叠加,然后利用了人性贪婪这一特性而形成链式效应,最后成功。本文不对区块链,或者说比特币进行概况性的介绍,而是讲述区块链所必须使用的密码技术原理。由于水平有限,希望能够写明白。

第一章 什么是密码技术

我们举个例子,小强要发一份电子邮件给小红,电子邮件的内容是:“今天晚上6点,天河城吃饭,不见不散!”,但是网络中一个的黑客小白,也是小强的情敌,他利用网络抓包工具窃听小强与小红的网络链路,截取了邮件内容。如下图:

那么,小白提前知道了小强与小红的约会,他就可以做很多事,至于做什么事就不在本文讨论的范围了。小强如何防止让小白知道他的约会呢?有一个办法,把“今天晚上6点,天河城吃饭,不见不散!”这句话加密,让小白截取了也看不明白,然后与小红预先约定的密码,小红收到加密的信息后使用预先约定的密码解密,还原出“今天晚上6点,天河城吃饭,不见不散!”这个约会。如下图:

这是一个最简单的加解密模型,小强通过AES算法,以及他和小红约定的密码(密码是他们两个人的生日连接,如“1999111120000520”),这个密码在计算机术语就叫密钥,AES算法就是一种数学运算规则,我们把密钥和算法称为密码技术。

由于小白不知道他们之间的密钥“1999111120000520”,所以他拿到的是:

k0oj5cPNQQAoqkqKHC4d94kBEyczzYd8+IPpNfVDnDa3un1weqcz17mYsvOeIQ6aMxA5+ulF3xviiaJrEtfW6w==

这一串加密的文本,无法解密,所以不知道内容是什么,而小红拿到了这一串加密的文本后,通过密钥“1999111120000520”及AES算法解密,就可以还原出加密前的内容:

“今天晚上6点,天河城吃饭,不见不散!”

下面通过python语言,实现这一过程的代码,注意你的计算机要导入pyCryptodome模块,如果你对编程没有兴趣,以下内容可以跳过不看

# -*- coding: utf-8 -*-

from Crypto.Cipher import AES

import base64 

def Addtext(Emailtext):

    while len(Emailtext.encode(‘utf-8’)) % 16 != 0:

        Emailtext += ‘/0’

    return str.encode(Emailtext)

key = ‘1999111120000520’

text = ‘今天晚上6点,天河城吃饭,不见不散!’

aes = AES.new(str.encode(key), AES.MODE_ECB)

encrypted_text = str(base64.encodebytes(aes.encrypt(Addtext(text))),encoding=’utf8′).replace(‘/n’, ”)

decrypted_text = str(aes.decrypt(base64.decodebytes(bytes(encrypted_text,encoding=’utf8′))).rstrip(b’/0′).decode(“utf8”))

print(‘加密文本:’, encrypted_text)

print(‘解密文本:’, decrypted_text)

代码运行结果

加密文本: k0oj5cPNQQAoqkqKHC4d94kBEyczzYd8+IPpNfVDnDa3un1weqcz17mYsvOeIQ6aMxA5+ulF3xviiaJrEtfW6w==

解密文本: 今天晚上6点,天河城吃饭,不见不散!

Process finished with exit code 0

————————————————

版权声明:本文为CSDN博主「蔡菜子」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/cd4836/article/details/103176113