Menu
0 Comments

加密算法之对称加密 – 假装是个程序员

互联网网络年代,从科学实验中提取的价值保险柜正成为越来越要紧。,咱们还应用各式各样的加密方法来警卫从科学实验中提取的价值保险柜。,只你真的变得流行各式各样的编码算法吗?是什么
公共用地的加密分为对称加密、非对称加密不狂暴的散列算法(紧缩的来说,哈希挑剔加密的。,冠词咱们来懂一下对称加密

前进甜如蜜糖小本人纸条

你读初中。,受胎程序员的高贵气味,她成地赶上了本人。
但在阿谁年代,并挑剔大伙儿都有移动电话。,据我看来在教室上向她相通从科学实验中提取的价值。,显现它最好的写在纸上。,那时在同窗的扶助下。,缓行转变。最枢要的是,假如本人同窗太猎奇,偷偷钞票你甜蜜甘美的的蜜糖,你可能性不太喜悦。
作为来的程序员,你在周末立刻在教室上买了两本大字典。,从那时起,下面的灵出现时你的小钞票上。:

123:5 564:3 11:8

665:2 123:3 456:6 789:2...

123(代表页码标注):5(代表行)

从此后来的,我妹子不再相干你了。(查字典亦)!)。。。
自然,藏族歌唱也可以名声是一种加密半生熟的。,大前提是:你可以一首诗。。。

对称加密

对称加密简略来说执意应用相等的数量主要的加密和解密灵,单方应用的钥匙必然的相等的数量(没大人物确信),出路却因此,咱们才干确保灵的保险柜性(就像PASIN)相似的。。
公共用地的对称编码算法有DES、3DES、AES、河豚等,它们的复合物亦有区别的的。。
这么,咱们到何种地步像下面的小钞票相似的在计算者中加密呢?

ASCII编码

ASCII大伙儿都霉臭熟识它。,刻由7位或8位表示。,比方65表示特征A66表示特征B,对应的二元系版式是:

二元系版式
A 01000001
B 01000010

异或运算的特征

0 ^ 0 = 0;
0 ^ 1 = 1;
1 ^ 0 = 1;
1 ^ 1 = 0;

相等的数量的异或相等的0。,差也许1,那时咱们放^=顾客一下:

0 = 0 ^ 0;
0 = 1 ^ 1;
1 = 0 ^ 1;
1 = 1 ^ 0;

依然说得通,为了更活泼的解说。,咱们万一下面的方程是:A ^ B = C
提供咱们对出路C和B举行异或运算,咱们就能开腰槽,对称加密的精粹就在嗨!

PHP如愿以偿本人最简略的对称编码算法

这是咱们的加密主要的。
$key = '[LVn[O] 6e{y= q~(82)g]
$keyLen = 斯特伦($key)

预备加密灵
$string = 完整地好。,迎将你的坚持到底,捏造是本人程序员。!'';

加密灵程度
$stringLen = 斯特伦($string)

假如主要的被加密,则灵不长。,那时咱们不时反复主要的。,直到大于或相等的加密灵(自然,在AC中),这挑剔本人稍稍苗条的。
if($keyLen < $stringLen) {
    $key = str_pad($key, $stringLen, $key);
}

$content = '''';
//每个字节与对应的key做异或运算
for($i = 0; $i < $stringLen; $i++) {
    $content .= chr(ord($string[$i]) ^ ord($key[$i]));
}

//这个执意咱们加密后的密文
var_dump($content);
//出口:string(48) "��ы�ٸ�ؔű��������������ܤ������ў��Ƃ��ֶ���"

//为了提高可读性,一般会将加密后的刻通过base64编码
var_dump(base64_encode($content));
//出口:string(64) "vujRi/XZuJPYlMWxl4+a2uLJy9jBosney+vcpNXrvffy0t3RnpX6xoK9uNa2ss7F"

//解密
$string = '''';
for($i = 0; $i < $stringLen; $i++) {
    $string .= chr(ord($content[$i]) ^ ord($key[$i]));
}

var_dump($string);
//出口:string(48) "完整地好,迎将你的坚持到底,捏造是本人程序员。!"

下面的加密和解密是完整相等的数量的算法。,我要不是来演示一下的。,我反复了一遍。。
因此,咱们就可以简单明了地加密咱们的从科学实验中提取的价值。,包装能以这种方法加密吗?自然。,归根结蒂,很小的仓库在计算者中。,让我举本人简略的加盖于来看一眼。。

加密图片

图片描述

这是加密前的图片。

图片描述

此图片用于加密主要的。

编码算法与是你这么说的嘛!算法彻底相等的数量。:

$file = ''/Users/zhjx922/Downloads/'';
$string = file_get_contents($file);
加密灵程度
$stringLen = 斯特伦($string)

$file = ''/Users/zhjx922/Downloads/'';
$key = file_get_contents($file);
//key程度
$keyLen = 斯特伦($key)


假如主要的被加密,则灵不长。,那时咱们不时反复主要的。,直到大于或相等的加密灵(自然,在AC中),这挑剔本人稍稍苗条的。
if($keyLen < $stringLen) {
    $key = str_pad($key, $stringLen, $key);
}

$content = '''';
for($i = 0; $i < $stringLen; $i++) {
    $content .= chr(ord($string[$i]) ^ ord($key[$i]));
}

file_put_contents('''', $content);

$string = file_get_contents('''');

$content = '''';
for($i = 0; $i < $stringLen; $i++) {
    $content .= chr(ord($string[$i]) ^ ord($key[$i]));
}

file_put_contents('''', $content);

流行的用于加密图片,但它彻底无法翻开。,这也指示,这挑剔本人好的加密方法(由于咱们不因此做)。,假如你变得流行JPG的建筑风格,苗条的算法,你霉臭能出口一张完整有区别的于TH的图片。
在起作用的解密图片,可以翻开,就像一号的相片相似的。。

在起作用的DES,3DES、AES算法及等等算法

不久以前,我想出了DES和3DES(Primple)的算法规律。,但响应的算法都不的太神志清醒的。,那时有本人打破。,我将使著名写文字。。
另一点是,请小心的应用公钥编码算法。,归根结蒂,这些吐艳的算法能禁受住测得结果。。前包括第一天和最后一天我在公司的指定遗传密码库中钞票了加密效能。,它显现很深。,细心读。,撞见加密灵简直是自身废墟的。。。。

迎将到来我的公开的演讲。,交流仿真

1161598283-589ca01779b10_articlex

发表评论

电子邮件地址不会被公开。 必填项已用*标注