前一天我们有稍微提到安全性演算法的其中一个,也就是今天的主题「共同金钥密码系统」(shared-key crypto system),其实笔者对於密码学一直有很浓厚的兴趣,但非相关科系出身,也是在转职的路上才接触到密码学,今天就让我们来聊聊相关的议题吧!
在开始今天主题之前,先来想想,生活中会在哪里使用到密码,换句话说,在明文传输过程中,会产生什麽样的风险?
共用金钥密码系统(shared-key crypto system)又称为「对称密钥演算法」(Symmetric-key algorithm),是因为在加密与解密的过程中使用同一把共同金钥。
加密(Encryption):将明文内容改变为无法读取的内容,要利用「key」才能解读资料。
解密(Descryption):将加密过後的讯息内容,利用「key」还原为明文内容。
明文传输的过程中,有些机密讯息若是被有心人士利用,会造成无法想像的後果,例如:密码。试想,当网站要求使用者输入密码时,输入的密码可以被所有人看到,那麽密码保护的资料,就显得没有意义了。再更一进步的说,使用者下单购买商品时,传输的过程中,让有心人士篡改了订单资料,那麽交易也就无法顺利进行,网站的安全性也会被质疑,基於上述种种情形,我们需要使用不同的密码系统进行资料保护。
接下来看看,什麽是Shared-key crypto system,在资料传输过程中,使用同一把「key」进行加密与解密,香当然缺点就是,若有人拿到这把钥匙,就可以解读加密过後的资料,这也是采用此方法时,需要考虑的地方。
cryptocode要手动安装:pip3 install cryptocode
import cryptocode
# 加密
str_encoded = cryptocode.encrypt("I am okay","wow")
# 解密
str_decoded = cryptocode.decrypt(str_encoded, "wow")
print(str_decoded)
输出:
I am okay
使用AES高阶加密标准(Advanced Encryption Standard)为范例:
JS中会使用到crypto-js库
var CryptoJS = require('crypto-js');
var data = { id: 1, text: 'Hello World' };
// 加密
var ciphertext = CryptoJS.AES.encrypt(JSON.stringify(data), 'secret_key_123').toString();
// 解密
var bytes = CryptoJS.AES.decrypt(ciphertext, 'secret_key_123');
var decryptedData = JSON.parse(bytes.toString(CryptoJS.enc.Utf8));
参考资料:https://www.gushiciku.cn/pl/pAWK/zh-tw
此篇会教学如何将 Bootstrap grid 格线系统,自干一个出来。 事前准备 Gird Sy...
Hi Dai Gei Ho~ 我是 Winnie ~ 在今天文章中,我们要来继续延伸 昨天文章的主题...
前言 昨天将 VMA结构检视了一遍,也大概了解vma_area_struct 与 mm_struct...
今天大概会聊到的范围 ComposeView 之前有介绍过 Compose 中的 AndroidV...
续 Day 20 Fault-Tolerant Consensus 共识问题通常可以公式化成:一个...