微信扫一扫
分享到朋友圈

理清弄透:加密&解密、签名&验签

作者:待字闺中 来源:待字闺中 公众号
分享到:

04-20

加密&解密、签名&验签,在区块链、钱包等领域应用甚广,背后的原理或细节是什么?这里通过图文并茂的故事,外加撸代码的方式,一起理清弄透这4个概念。



一、故事角色和人设

正式开始之前,先介绍一下本文的主人翁Bob。他有2把秘钥:公钥、私钥;生活中,他会遇到3种类型的人:朋友Alice、骗子Doug、可信任的公证人CA。Bob的公钥是公开的,所有人都可见,私钥仅Bob自己可见。

  • Bob有2把秘钥:公钥BobPub、私钥BobPri



  • Bob会遇到3类人:Alice、CA、Doug是每类的代表




二、对称加密&解密

故事角色和人设交代清楚后,主人翁Bob遇到了第一个棘手难题:平时通过一款聊天App与朋友Alice联系,某一天收到一份神秘邮件,里面明文写满了历史聊天内容。吓一大跳,还好没聊隐私的事情。惊吓之后,Bob想到了第一个办法:

  • 棘手难题1:明文聊天,网络传输过程中被劫持,有窃听风险

  • 解决办法1:与Alice约定一个暗号串,对聊天消息加密后再发送;


→ 具体操作步骤如下:

  1. Alice 与 Bob 两人事先约定一个共用密钥key

  2. Alice 将消息用key加密,将密文邮递给 Bob;

  3. Bob 收到密文后,用key解密,看到明文;


→ 这个过程用到的其实是密码学中的对称加密,实现代码如下:

var crypto = require('crypto');
// Encryptfunction encrypt(str, key) { var cipher = crypto.createCipher('aes192', key); var enc = cipher.update(str, 'utf8', 'hex'); enc += cipher.final('hex'); return enc;}
// Decryptfunction decrypt(str, key) { var decipher = crypto.createDecipher('aes192', key); var dec = decipher.update(str, 'hex', 'utf8'); dec += decipher.final('utf8'); return dec;}
var msg = 'Hey Bob, how about lunch at Taco Bell.';
// Both Bob and Alice have the same keyvar key = 'aceport';
// Aliceencrypted_msg = encrypt(msg, key);console.log(encrypted_msg);
// Bobdecrypted_msg = decrypt(encrypted_msg, key);console.log(decrypted_msg);



三、非对称加密&解密

Alice是个开朗的姑娘,朋友很多,很快把Bob发明的加密聊天传播给了其它朋友。同时,Alice又是个粗心的姑娘,与所有朋友聊天都用了同一个暗号串。美好的日子没过多久,Bob又收到一份神秘邮件,里面除了满写满了明文聊天内容之外,还多了一串

阅读39742
加密 
举报0
关注待字闺中微信号:gh_81abae3e5d59

用微信扫描二维码即可关注
声明

1、头条易读遵循行业规范,任何转载的稿件都会明确标注作者和来源;
2、本文内容来自“待字闺中”微信公众号,文章版权归待字闺中公众号所有。

评论
更多

文章来自于公众号:

邮箱qunxueyuan#163.com(将#换成@)
微信编辑器
免责声明
www.weixinyidu.com   免责声明
版权声明:本站收录微信公众号和微信文章内容全部来自于网络,仅供个人学习、研究或者欣赏使用。版权归原作者所有。禁止一切商业用途。其中内容并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。如果您发现头条易读网站上有侵犯您的知识产权的内容,请与我们联系,我们会及时修改或删除。
本站声明:本站与腾讯微信、微信公众平台无任何关联,非腾讯微信官方网站。