当前位置:文档之家› 加密算法汇总

加密算法汇总

加密算法汇总
加密算法汇总

一、实用加密

1、Python 与Bash Shell 的结合

这个命令会让你输入一个字符串,然后会再输出一串加密了的数字。

加密代码[照直输入]:

python -c 'print reduce(lambda a,b: a*256+ord(b), raw_input("string: "), 0)'

解密代码[数字后+P]:

dc -e 输出的数字P

2、应该是纯Bash Shell,含VIM 的xxd

用gtalk@https://www.doczj.com/doc/cc17117014.html, 作为明文,加密分两步,当然了,也是可以一步过的,呆会说~

加密代码:

1、echo "gtalk@https://www.doczj.com/doc/cc17117014.html," |xxd -ps -u

得到:6774616C6B40676D61696C2E636F6D0A

2、echo "ibase=16; 6774616C6B40676D61696C2E636F6D0A" |bc

得到:137514765985002236391382606438443478282

一步加密代码:

echo "ibase=16; $(echo "gtalk@https://www.doczj.com/doc/cc17117014.html," |xxd -ps -u)" |bc

得到:137514765985002236391382606438443478282

解密代码:

3、dc -e 137514765985002236391382606438443478282P

得到:gtalk@https://www.doczj.com/doc/cc17117014.html,

3、Base64 编码,这个很好很强大,适合写加密脚本

同样用gtalk@https://www.doczj.com/doc/cc17117014.html, 作为明文,来看代码:

echo "gtalk@https://www.doczj.com/doc/cc17117014.html," |base64 -i

得到:Z3RhbGtAZ21haWwuY29tCg==

解密代码:

echo "Z3RhbGtAZ21haWwuY29tCg==" |base64 -d

得到:gtalk@https://www.doczj.com/doc/cc17117014.html,

二、加密算法

1、进制加密

/*任意进制加密*/

function EnChTo(h){

var monyer = new Array();var i,s;

for(i=0;i

monyer+=txt.value.charCodeAt(i).toString(h)+" ";

txt.value=monyer;

}

/*任意进制解密*/

function DeChTo(h){

var monyer = new Array();var i;

var s=txt.value.split(" ");

for(i=0;i

monyer+=String.fromCharCode(parseInt(s[i],h));

txt.value=monyer;

}

2、base64

var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";

var base64DecodeChars = new Array(-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,

-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,

-1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57,

58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6,

7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,

25, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,

37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1,

-1, -1);

function base64encode(str)

{

var out, i, len;

var c1, c2, c3;

len = str.length;

i = 0;

out = "";

while (i < len)

{

c1 = str.charCodeAt(i++) & 0xff;

if (i == len)

{

out += base64EncodeChars.charAt(c1 >> 2);

out += base64EncodeChars.charAt((c1 & 0x3) << 4);

out += "==";

break

}

c2 = str.charCodeAt(i++);

if (i == len)

{

out += base64EncodeChars.charAt(c1 >> 2);

out += base64EncodeChars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4));

out += base64EncodeChars.charAt((c2 & 0xF) << 2);

out += "=";

break

}

c3 = str.charCodeAt(i++);

out += base64EncodeChars.charAt(c1 >> 2);

out += base64EncodeChars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4));

out += base64EncodeChars.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >> 6));

out += base64EncodeChars.charAt(c3 & 0x3F)

}

return out

}

function base64decode(str)

{

var c1, c2, c3, c4;

var i, len, out;

len = str.length;

i = 0;

out = "";

while (i < len)

{

do

{

c1 = base64DecodeChars[str.charCodeAt(i++) & 0xff]

} while (i < len && c1 == -1);

if (c1 == -1)

break;

do

{

c2 = base64DecodeChars[str.charCodeAt(i++) & 0xff]

} while (i < len && c2 == -1);

if (c2 == -1)

break;

out += String.fromCharCode((c1 << 2) | ((c2 & 0x30) >> 4));

do

{

c3 = str.charCodeAt(i++) & 0xff;

if (c3 == 61)

return out;

c3 = base64DecodeChars[c3]

} while (i < len && c3 == -1);

if (c3 == -1)

break;

out += String.fromCharCode(((c2 & 0XF) << 4) | ((c3 & 0x3C) >> 2));

do

{

c4 = str.charCodeAt(i++) & 0xff;

if (c4 == 61)

return out;

c4 = base64DecodeChars[c4]

} while (i < len && c4 == -1);

if (c4 == -1)

break;

out += String.fromCharCode(((c3 & 0x03) << 6) | c4)

}

return out

}

3、MD5

function str2blks_MD5(str)

{

nblk = ((str.length + 8) >> 6) + 1;

blks = new Array(nblk * 16);

for (i = 0; i < nblk * 16; i++)

blks[i] = 0;

for (i = 0; i < str.length; i++)

blks[i >> 2] |= str.charCodeAt(i) << ((i % 4) * 8);

blks[i >> 2] |= 0x80 << ((i % 4) * 8);

blks[nblk * 16 - 2] = str.length * 8;

return blks

}

function add(x, y)

{

var lsw = (x & 0xFFFF) + (y & 0xFFFF);

var msw = (x >> 16) + (y >> 16) + (lsw >> 16);

return (msw << 16) | (lsw & 0xFFFF)

}

function rol(num, cnt)

{

return (num << cnt) | (num >>> (32 - cnt))

}

function cmn(q, a, b, x, s, t)

{

return add(rol(add(add(a, q), add(x, t)), s), b)

}

function ff(a, b, c, d, x, s, t)

{

return cmn((b & c) | ((~b) & d), a, b, x, s, t)

}

function gg(a, b, c, d, x, s, t)

{

return cmn((b & d) | (c & (~d)), a, b, x, s, t)

}

function hh(a, b, c, d, x, s, t)

{

return cmn(b ^ c ^ d, a, b, x, s, t)

}

function ii(a, b, c, d, x, s, t)

{

return cmn(c ^ (b | (~d)), a, b, x, s, t)

}

function calcMD5(str)

{

x = str2blks_MD5(str);

a = 1732584193;

b = -271733879;

c = -1732584194;

d = 271733878;

for (i = 0; i < x.length; i += 16)

{

olda = a;

oldb = b;

oldc = c;

oldd = d;

a = ff(a, b, c, d, x[i + 0], 7, -680876936);

d = ff(d, a, b, c, x[i + 1], 12, -389564586);

c = ff(c, d, a, b, x[i + 2], 17, 606105819);

b = ff(b, c, d, a, x[i + 3], 22, -1044525330);

a = ff(a, b, c, d, x[i + 4], 7, -176418897);

d = ff(d, a, b, c, x[i + 5], 12, 1200080426);

c = ff(c, d, a, b, x[i + 6], 17, -1473231341);

b = ff(b, c, d, a, x[i + 7], 22, -45705983);

a = ff(a, b, c, d, x[i + 8], 7, 1770035416);

d = ff(d, a, b, c, x[i + 9], 12, -1958414417);

c = ff(c, d, a, b, x[i + 10], 17, -42063);

b = ff(b, c, d, a, x[i + 11], 22, -1990404162);

a = ff(a, b, c, d, x[i + 12], 7, 1804603682);

d = ff(d, a, b, c, x[i + 13], 12, -40341101);

c = ff(c, d, a, b, x[i + 14], 17, -1502002290);

b = ff(b, c, d, a, x[i + 15], 22, 1236535329);

a = gg(a, b, c, d, x[i + 1], 5, -165796510);

d = gg(d, a, b, c, x[i + 6], 9, -1069501632);

c = gg(c, d, a, b, x[i + 11], 14, 643717713);

b = gg(b, c, d, a, x[i + 0], 20, -373897302);

a = gg(a, b, c, d, x[i + 5], 5, -701558691);

d = gg(d, a, b, c, x[i + 10], 9, 38016083);

c = gg(c, d, a, b, x[i + 15], 14, -660478335);

b = gg(b, c, d, a, x[i + 4], 20, -405537848);

a = gg(a, b, c, d, x[i + 9], 5, 568446438);

d = gg(d, a, b, c, x[i + 14], 9, -1019803690);

c = gg(c, d, a, b, x[i + 3], 14, -187363961);

b = gg(b, c, d, a, x[i + 8], 20, 1163531501);

a = gg(a, b, c, d, x[i + 13], 5, -1444681467);

d = gg(d, a, b, c, x[i + 2], 9, -51403784);

c = gg(c, d, a, b, x[i + 7], 14, 1735328473);

b = gg(b, c, d, a, x[i + 12], 20, -1926607734);

a = hh(a, b, c, d, x[i + 5], 4, -378558);

d = hh(d, a, b, c, x[i + 8], 11, -2022574463);

c = hh(c, d, a, b, x[i + 11], 16, 1839030562);

b = hh(b, c, d, a, x[i + 14], 23, -35309556);

a = hh(a, b, c, d, x[i + 1], 4, -1530992060);

d = hh(d, a, b, c, x[i + 4], 11, 1272893353);

c = hh(c, d, a, b, x[i + 7], 16, -155497632);

b = hh(b, c, d, a, x[i + 10], 23, -1094730640);

a = hh(a, b, c, d, x[i + 13], 4, 681279174);

d = hh(d, a, b, c, x[i + 0], 11, -358537222);

c = hh(c, d, a, b, x[i + 3], 16, -722521979);

b = hh(b, c, d, a, x[i + 6], 23, 76029189);

a = hh(a, b, c, d, x[i + 9], 4, -640364487);

d = hh(d, a, b, c, x[i + 12], 11, -421815835);

c = hh(c, d, a, b, x[i + 15], 16, 530742520);

b = hh(b, c, d, a, x[i + 2], 23, -995338651);

a = ii(a, b, c, d, x[i + 0], 6, -198630844);

d = ii(d, a, b, c, x[i + 7], 10, 1126891415);

c = ii(c, d, a, b, x[i + 14], 15, -1416354905);

b = ii(b, c, d, a, x[i + 5], 21, -57434055);

a = ii(a, b, c, d, x[i + 12], 6, 1700485571);

d = ii(d, a, b, c, x[i + 3], 10, -1894986606);

c = ii(c, d, a, b, x[i + 10], 15, -1051523);

b = ii(b, c, d, a, x[i + 1], 21, -2054922799);

a = ii(a, b, c, d, x[i + 8], 6, 1873313359);

d = ii(d, a, b, c, x[i + 15], 10, -30611744);

c = ii(c, d, a, b, x[i + 6], 15, -1560198380);

b = ii(b, c, d, a, x[i + 13], 21, 1309151649);

a = ii(a, b, c, d, x[i + 4], 6, -145523070);

d = ii(d, a, b, c, x[i + 11], 10, -1120210379);

c = ii(c, d, a, b, x[i + 2], 15, 718787259);

b = ii(b, c, d, a, x[i + 9], 21, -343485551);

a = add(a, olda);

b = add(b, oldb);

c = add(c, oldc);

d = add(d, oldd)

}

return rhex(a) + rhex(b) + rhex(c) + rhex(d)

}

4、sha

sha.c

5、sha1

sha1.h sha1.c

6、sha256

sha256.h sha256.c

三、加密工具

Hash.exe

ECC加密算法入门介绍

标题:ECC加密算法入门介绍 发信人:zmworm 时间:2003/05/04 08:32pm 详细信息: ECC加密算法入门介绍 作者:ZMWorm[CCG] E-Mail:zmworm@https://www.doczj.com/doc/cc17117014.html, 主页:https://www.doczj.com/doc/cc17117014.html,/ 前言 同RSA(Ron Rivest,Adi Shamir,Len Adleman三位天才的名字)一样,ECC(Elliptic Curves Cryptography,椭圆曲线密码编码学)也属于公开密钥算法。目前,国内详细介绍ECC的公开文献并不多(反正我没有找到)。有一些简介,也是泛泛而谈,看完后依然理解不了ECC的实质(可能我理解力太差)。前些天我从国外网站找到些材料,看完后对ECC似乎懵懂了。于是我想把我对ECC的认识整理一下,与大家分享。当然ECC博大精深,我的认识还很肤浅,文章中错误一定不少,欢迎各路高手批评指正,小弟我洗耳恭听,并及时改正。文章将采用连载的方式,我写好一点就贴出来一点。本文主要侧重理论,代码实现暂不涉及。这就要求你要有一点数学功底。最好你能理解RSA算法,对公开密钥算法有一个了解。《近世代数基础》《初等数论》之类的书,最好您先翻一下,这对您理解本文是有帮助的。别怕,我尽量会把语言通俗些,希望本文能成为学习ECC的敲门砖。 一、从平行线谈起。 平行线,永不相交。没有人怀疑把:)不过到了近代这个结论遭到了质疑。平行线会不会在很远很远的地方相交了?事实上没有人见到过。所以“平行线,永不相交”只是假设(大家想想初中学习的平行公理,是没有证明的)。既然可以假设平行线永不相交,也可以假设平行线在很远很远的地方相交了。即平行线相交于无穷远点P∞(请大家闭上眼睛,想象一下那个无穷远点P∞,P∞是不是很虚幻,其实与其说数学锻炼人的抽象能力,还不如说是锻炼人的想象力)。给个图帮助理解一下: 直线上出现P∞点,所带来的好处是所有的直线都相交了,且只有一个交点。这就把直线的平行与相交统一了。为与无穷远点相区别把原来平面上的点叫做平常点。 以下是无穷远点的几个性质。

摩斯密码以及十种常用加密方法

摩斯密码以及十种常用加密方法 ——阿尔萨斯大官人整理,来源互联网摩斯密码的历史我就不再讲了,各位可以自行百度,下面从最简单的开始:时间控制和表示方法 有两种“符号”用来表示字元:划(—)和点(·),或分别叫嗒(Dah)和滴(Dit)或长和短。 用摩斯密码表示字母,这个也算作是一层密码的: 用摩斯密码表示数字:

用摩斯密码表示标点符号: 目前最常用的就是这些摩斯密码表示,其余的可以暂时忽略 最容易讲的栅栏密码: 手机键盘加密方式,是每个数字键上有3-4个字母,用两位数字来表示字母,例如:ru用手机键盘表示就是:7382, 那么这里就可以知道了,手机键盘加密方式不可能用1开头,第二位数字不可能超过4,解密的时候参考此

关于手机键盘加密还有另一种方式,就是拼音的方式,具体参照手机键盘来打,例如:“数字”表示出来就是:748 94。在手机键盘上面按下这几个数,就会出现:“数字”的拼音 手机键盘加密补充说明:利用重复的数字代表字母也是可以的,例如a可以用21代表,也可以用2代表,如果是数字9键上面的第四个字母Z也可以用9999来代表,就是94,这里也说明,重复的数字最小为1位,最大为4位。 电脑键盘棋盘加密,利用了电脑的棋盘方阵,但是个人不喜这种加密方式,因需要一个一个对照加密

当铺密码比较简单,用来表示只是数字的密码,利用汉字来表示数字: 电脑键盘坐标加密,如图,只是利用键盘上面的字母行和数字行来加密,下面有注释: 例:bye用电脑键盘XY表示就是: 351613

电脑键盘中也可参照手机键盘的补充加密法:Q用1代替,X可以用222来代替,详情见6楼手机键盘补充加密法。 ADFGX加密法,这种加密法事实上也是坐标加密法,只是是用字母来表示的坐标: 例如:bye用此加密法表示就是:aa xx xf 值得注意的是:其中I与J是同一坐标都是gd,类似于下面一层楼的方法:

关于密码学的发展和一些常见的加密算法

关于密码学的发展和一些常见的加密算法 1.悠久迷人的密码史话——密码学和密码 前言: 密码学(Cryptology,来源于希腊语kryptos和graphein,即隐藏和书写的意思)这门科学,或者说这门艺术,通常被分为两个部分,密码学(Cryptography)的任务是构建更为隐秘而且有效的密码,或者说加密方式;而与之相对应,密码分析学(Crypanalysis)则是研究已有的加密法的弱点,在没有密钥的情况下将密文还原成为明文。这两种科学相互依靠而不能分割,密码学家(Cryptologist)需要研习密码学来掌握加密方式,以便更好地解密;同样需要了解密码分析学,以判定自己密码的安全性高低。有一句话说的很好:“密码是两个天才的较量,败者将耗尽智慧而死。” 密码学产生的根本原因在于人们想要传递一些只有我们允许的接受者才能接受并理解的信息。被隐藏的真实信息称为明文(Plaintext),明文通过加密法(Cipher)变为密文(Ciphertext),这个过程被称为加密(Encryption),通过一个密钥(Key)控制。密文在阅读时需要解密(Decryption),同样需要密钥,这个过程由密码员(Cryptographer)完成。但是密码的传递并非绝对安全,可能有未得到允许的人员得到密文,并且凭借他们的耐心和智慧(我们通常假定他们有足够的时间和智慧),在没有密钥的情况下得到明文,这种方法称为破解(Break)。通常使用的加密方法有编码法(Code)和加密法(Cipher),编码法是指用字,短语和数字来替代明文,生成的密文称为码文(Codetext),编码法不需要密钥或是算法,但是需要一个编码簿(Codebook),编码簿内是所有明文与密文的对照表;而加密法则是使用算法和密钥。另外一种较常用的方法是夹带加密法(Steganography),顾名思义,它是将密文以隐藏的方式传递的,比如图画或是其它消息中,或是使用隐形墨水,在计算机能够进行图象和其它信息的处理之后,这种方法更是有了极大的发展空间。 密码的历史十分悠久。大约在4000年以前,在古埃及的尼罗河畔,一位擅长书写者在贵族的基碑上书写铭文时有意用加以变形的象形文字而不是普通的象形文字来写铭文,从而揭开了有文字记载的密码史。 公元前5世纪,古斯巴达人使用了一种叫做“天书”的器械,这是人类历史上最早使用的密码器械。“天书”是一根用草纸条、皮条或羊皮纸条紧紧缠绕的木棍。密信自上而下写在羊皮纸条上。然后把羊皮纸条解开送出。这些不连接的文字毫无意义,除非把羊皮纸条重新缠在一根直径和原木棍相同的木棍上,这样字就一圈圈跳出来,形成那封信。 公元前4世纪前后,希腊著名作家艾奈阿斯在其著作《城市防卫论》中就曾提到一种被称为“艾奈阿斯绳结”的密码。它的作法是从绳子的一端开始,每隔一段距离打一个绳结,而绳结之间距离不等,不同的距离表达不同的字母。按此规定把绳子上所有绳结的距离按顺序记录下来,并换成字母,就可理解它所传递的信息。 古罗马时代曾使用过一种“代替式密码”,把信中每个文字的字母都用字母顺序表中相隔两位后的一个字母取代,这种代替式密码直到第二次大战时还被日本海军使用。 此外,在古代还出现过一种被称为“叠痕法”的密码,使用时先把信纸折叠几下(上下及左右),然后铺平信纸,将传递的信息按顺序一个个分开,写在折

国密算法(国家商用密码算法简介)

国家商用密码算法简介 密码学是研究编制密码和破译密码的技术科学,起源于隐秘消息传输,在编码和破译中逐渐发展起来。密码学是一个综合性的技术科学,与语言学、数学、电子学、声学、信息论、计算机科学等有着广泛而密切的联系。密码学的基本思想是对敏感消息的保护,主要包括机密性,鉴别,消息完整性和不可否认性,从而涉及加密,杂凑函数,数字签名,消息认证码等。 一.密码学简介 密码学中应用最为广泛的的三类算法包括对称算法、非对称算法、杂凑算法。 1.1 对称密码 对称密码学主要是分组密码和流密码及其应用。分组密码中将明文消息进行分块加密输出密文区块,而流密码中使用密钥生成密钥流对明文消息进行加密。世界上应用较为广泛的包括DES、3DES、AES,此外还有Serpent,Twofish,MARS和RC6等算法。对称加密的工作模式包括电码本模式(ECB 模式),密码反馈模式(CFB 模式),密码分组链接模式(CBC 模式),输入反馈模式(OFB 模式)等。1.2 非对称密码 公钥密码体制由Diffie和Hellman所提出。1978年Rivest,Shamir和Adleman提出RAS密码体制,基于大素数分解问题。基于有限域上的离散对数问题产生了ElGamal密码体制,而基于椭圆曲线上的离散对数问题产生了椭圆曲线密码密码体制。此外出现了其他公钥密码体制,这些密码体制同样基于困难问题。目前应用较多的包括RSA、DSA、DH、ECC等。 1.3杂凑算法 杂凑算法又称hash函数,就是把任意长的输入消息串变化成固定长的输出串的一种函数。这个输出串称为该消息的杂凑值。一个安全的杂凑函数应该至少满足以下几个条件。 1)输入长度是任意的; 2)输出长度是固定的,根据目前的计算技术应至少取128bits长,以便抵抗生日攻击; 3)对每一个给定的输入,计算输出即杂凑值是很容易的; 4)给定杂凑函数的描述,找到两个不同的输入消息杂凑到同一个值是计算上不可行的,或给定 杂凑函数的描述和一个随机选择的消息,找到另一个与该消息不同的消息使得它们杂凑到同一个值是计算上不可行的。 杂凑函数主要用于完整性校验和提高数字签名的有效性,目前已有很多方案。这些算法都是伪随机函数,任何杂凑值都是等可能的。输出并不以可辨别的方式依赖于输入;在任何输入串中单个比特

RSA加密算法加密与解密过程解析

RSA加密算法加密与解密过程解析 1.加密算法概述 加密算法根据内容是否可以还原分为可逆加密和非可逆加密。 可逆加密根据其加密解密是否使用的同一个密钥而可以分为对称加密和非对称加密。 所谓对称加密即是指在加密和解密时使用的是同一个密钥:举个简单的例子,对一个字符串C做简单的加密处理,对于每个字符都和A做异或,形成密文S。 解密的时候再用密文S和密钥A做异或,还原为原来的字符串C。这种加密方式有一个很大的缺点就是不安全,因为一旦加密用的密钥泄露了之后,就可以用这个密钥破解其他所有的密文。 非对称加密在加密和解密过程中使用不同的密钥,即公钥和私钥。公钥用于加密,所有人都可见,私钥用于解密,只有解密者持有。就算在一次加密过程中原文和密文发生泄漏,破解者在知道原文、密文和公钥的情况下无法推理出私钥,很大程度上保证了数据的安全性。 此处,我们介绍一种非常具有代表性的非对称加密算法,RSA加密算法。RSA 算法是1977年发明的,全称是RSA Public Key System,这个Public Key 就是指的公共密钥。 2.密钥的计算获取过程 密钥的计算过程为:首先选择两个质数p和q,令n=p*q。 令k=?(n)=(p?1)(q?1),原理见4的分析 选择任意整数d,保证其与k互质 取整数e,使得[de]k=[1]k。也就是说de=kt+1,t为某一整数。

3.RSA加密算法的使用过程 同样以一个字符串来进行举例,例如要对字符串the art of programming 进行加密,RSA算法会提供两个公钥e和n,其值为两个正整数,解密方持有一个私钥d,然后开始加密解密过程过程。 1. 首先根据一定的规整将字符串转换为正整数z,例如对应为0到36,转化后形成了一个整数序列。 2. 对于每个字符对应的正整数映射值z,计算其加密值M=(N^e)%n. 其中N^e表示N的e次方。 3. 解密方收到密文后开始解密,计算解密后的值为(M^d)%n,可在此得到正整数z。 4. 根据开始设定的公共转化规则,即可将z转化为对应的字符,获得明文。 4.RSA加密算法原理解析 下面分析其内在的数学原理,说到RSA加密算法就不得不说到欧拉定理。 欧拉定理(Euler’s theorem)是欧拉在证明费马小定理的过程中,发现的一个适用性更广的定理。 首先定义一个函数,叫做欧拉Phi函数,即?(n),其中,n是一个正整数。?(n)=总数(从1到n?1,与n互质整数) 比如5,那么1,2,3,4,都与5互质。与5互质的数有4个。?(5)=4再比如6,与1,5互质,与2,3,4并不互质。因此,?(6)=2

转 常用加密算法介绍

转常用加密算法介绍 5.3.1古典密码算法 古典密码大都比较简单,这些加密方法是根据字母的统计特性和语言学知识加密的,在可用计算机进行密码分析的今天,很容易被破译。虽然现在很少采用,但研究这些密码算法的原理,对于理解、构造和分析现代密码是十分有益的。表5-1给出了英文字母在书报中出现的频率统计。 表5-1英文字母在书报中出现的频率 字母 A B C D E F G H I J K L M 频率 13.05 9.02 8.21 7.81 7.28 6.77 6.64 6.64 5.58 4.11 3.60 2.93 2.88 字母 N O P Q

R S T U V W X Y Z 频率 2.77 2.62 2.15 1.51 1.49 1.39 1.28 1.00 0.42 0.30 0.23 0.14 0.09 古典密码算法主要有代码加密、替换加密、变位加密、一次性密码簿加密 等几种算法。 1.代码加密 代码加密是一种比较简单的加密方法,它使用通信双方预先设定的一组有 确切含义的如日常词汇、专有名词、特殊用语等的代码来发送消息,一般只能 用于传送一组预先约定的消息。 密文:飞机已烧熟。 明文:房子已经过安全检查。 代码加密的优点是简单好用,但多次使用后容易丧失安全性。 2.替换加密 将明文字母表M中的每个字母替换成密文字母表C中的字母。这一类密码 包括移位密码、替换密码、仿射密码、乘数密码、多项式代替密码、密钥短语 密码等。这种方法可以用来传送任何信息,但安全性不及代码加密。因为每一 种语言都有其特定的统计规律,如英文字母中各字母出现的频度相对基本固定,根据这些规律可以很容易地对替换加密进行破解。以下是几种常用的替换加密 算法。

五种常用的数据加密方法

五种常用的数据加密方法.txt22真诚是美酒,年份越久越醇香浓型;真诚是焰火,在高处绽放才愈是美丽;真诚是鲜花,送之于人手有余香。一颗孤独的心需要爱的滋润;一颗冰冷的心需要友谊的温暖;一颗绝望的心需要力量的托慰;一颗苍白的心需要真诚的帮助;一颗充满戒备关闭的门是多么需要真诚这一把钥匙打开呀!每台电脑的硬盘中都会有一些不适合公开的隐私或机密文件,如个人照片或客户资料之类的东西。在上网的时候,这些信息很容易被黑客窃取并非法利用。解决这个问题的根本办法就是对重要文件加密,下面介绍五种常见的加密办法。加密方法一: 利用组策略工具,把存放隐私资料的硬盘分区设置为不可访问。具体方法:首先在开始菜单中选择“运行”,输入 gpedit.msc,回车,打开组策略配置窗口。选择“用户配置”->“管理模板”->“Windows 资源管理器”,双击右边的“防止从“我的电脑”访问驱动器”,选择“已启用”,然后在“选择下列组合中的一个”的下拉组合框中选择你希望限制的驱动器,点击确定就可以了。 这时,如果你双击试图打开被限制的驱动器,将会出现错误对话框,提示“本次操作由于这台计算机的限制而被取消。请与您的系统管理员联系。”。这样就可以防止大部分黑客程序和病毒侵犯你的隐私了。绝大多数磁盘加密软件的功能都是利用这个小技巧实现的。这种加密方法比较实用,但是其缺点在于安全系数很低。厉害一点的电脑高手或者病毒程序通常都知道怎么修改组策略,他们也可以把用户设置的组策略限制取消掉。因此这种加密方法不太适合对保密强度要求较高的用户。对于一般的用户,这种加密方法还是有用的。 加密方法二:

利用注册表中的设置,把某些驱动器设置为隐藏。隐藏驱动器方法如下: 在注册表HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\E xplorer中新建一个DWORD值,命名为NoDrives,并为它赋上相应的值。例如想隐藏驱动器C,就赋上十进制的4(注意一定要在赋值对话框中设置为十进制的4)。如果我们新建的NoDrives想隐藏A、B、C三个驱动器,那么只需要将A、B、C 驱动器所对应的DWORD值加起来就可以了。同样的,如果我们需要隐藏D、F、G三个驱动器,那么NoDrives就应该赋值为8+32+64=104。怎么样,应该明白了如何隐藏对应的驱动器吧。目前大部分磁盘隐藏软件的功能都是利用这个小技巧实现的。隐藏之后,WIndows下面就看不见这个驱动器了,就不用担心别人偷窥你的隐私了。 但这仅仅是一种只能防君子,不能防小人的加密方法。因为一个电脑高手很可能知道这个技巧,病毒就更不用说了,病毒编写者肯定也知道这个技巧。只要把注册表改回来,隐藏的驱动器就又回来了。虽然加密强度低,但如果只是对付一下自己的小孩和其他的菜鸟,这种方法也足够了。 加密方法三: 网络上介绍加密方法一和加密方法二的知识性文章已经很多,已经为大家所熟悉了。但是加密方法三却较少有人知道。专家就在这里告诉大家一个秘密:利用Windows自带的“磁盘管理”组件也可以实现硬盘隐藏! 具体操作步骤如下:右键“我的电脑”->“管理”,打开“计算机管理”配置窗口。选择“存储”->“磁盘管理”,选定你希望隐藏的驱动器,右键选择“更改驱动器名和路径”,然后在出现的对话框中选择“删除”即可。很多用户在这里不

加密算法介绍及加密算法的选择

加密算法介绍及如何选择加密算法 加密算法介绍 一.密码学简介 据记载,公元前400年,古希腊人发明了置换密码。1881年世界上的第一个电话保密专利出现。在第二次世界大战期间,德国军方启用“恩尼格玛”密码机,密码学在战争中起着非常重要的作用。 随着信息化和数字化社会的发展,人们对信息安全和保密的重要性认识不断提高,于是在1997年,美国国家标准局公布实施了“美国数据加密标准(DES)”,民间力量开始全面介入密码学的研究和应用中,采用的加密算法有DES、RSA、SHA等。随着对加密强度需求的不断提高,近期又出现了AES、ECC等。 使用密码学可以达到以下目的: 保密性:防止用户的标识或数据被读取。 数据完整性:防止数据被更改。 身份验证:确保数据发自特定的一方。 二.加密算法介绍 根据密钥类型不同将现代密码技术分为两类:对称加密算法(秘密钥匙加密)和非对称加密算法(公开密钥加密)。 对称钥匙加密系统是加密和解密均采用同一把秘密钥匙,而且通信双方都必须获得这把钥匙,并保持钥匙的秘密。 非对称密钥加密系统采用的加密钥匙(公钥)和解密钥匙(私钥)是不同的。 对称加密算法 对称加密算法用来对敏感数据等信息进行加密,常用的算法包括: DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。

3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。 AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高; AES 2000年10月,NIST(美国国家标准和技术协会)宣布通过从15种侯选算法中选出的一项新的密匙加密标准。Rijndael被选中成为将来的AES。 Rijndael是在 1999 年下半年,由研究员 Joan Daemen 和 Vincent Rijmen 创建的。AES 正日益成为加密各种形式的电子数据的实际标准。 美国标准与技术研究院 (NIST) 于 2002 年 5 月 26 日制定了新的高级加密标准(AES) 规范。 算法原理 AES 算法基于排列和置换运算。排列是对数据重新进行安排,置换是将一个数据单元替换为另一个。AES 使用几种不同的方法来执行排列和置换运算。 AES 是一个迭代的、对称密钥分组的密码,它可以使用128、192 和 256 位密钥,并且用 128 位(16字节)分组加密和解密数据。与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。通过分组密码返回的加密数据的位数与输入数据相同。迭代加密使用一个循环结构,在该循环中重复置换和替换输入数据。 AES与3DES的比较 非对称算法

信息安全 实验五 古典密码算法

实验五古典密码算法 实验目的: 通过编程实现替代密码算法和置换密码算法,加深对古典密码体制的了解,为深入学习密码学奠定基础。 实验环境: 运行Windows 或Linux 操作系统的PC 机,具有gcc(Linux)、VC(Windows)等C 语言编 译环境。 实验原理: 古典密码算法曾被广泛应用,大都比较简单,使用手工和机械操作来实现加密和解密。它的主要应用对象是文字信息,利用密码算法进行文字信息的加密和解密。下面介绍两种常见的具有代表性的古典密码算法,以帮助读者对密码算法建立一个初步的印象。 1. 替代密码 替代密码算法的原理是使用替代法进行加密,就是将文中的字符用其它字符替代后形成密文。例如,明文字母a、b、c、d,用D、E、F、G 做对应替换后形成密文。 替代密码包括多种类型,如单表替代密码、多明码替代密码、多字母替代密码、多表替 代密码等。下面我们介绍一种典型的单表替代密码——凯撒(Caesar)密码,又叫循环移位密码。它的加密方法就是将文中的每个字母用此字符在字母表中后面第K 个字母替代。它的加密过程可以表示为下面的函数: E(m)=(m+k) mod n 其中,m 为明文字母在字母表中的位置数;n 为字母表的字母个数;k 为密钥;E(m)为 密文字母在字母表中对应的位置数。 例如,对于明文字母H,其在字母表中的位置数为8,设k=5,则按照上式计算出来的 密文为L,计算过程如下: E(8)=(m+k) mod n=(8+5) mod 26=13=I 2. 置换密码 置换密码算法的原理是不改变明文字符,只将字符在明文中的排列顺序改变,从而实现 明文信息的加密。置换密码有时又称为换位密码。 矩阵换位法是实现置换密码的一种常用方法。它将明文中的字母按照给定的顺序安排在 一个矩阵中,然后根据密钥提供的顺序重新组合矩阵中的字母,从而形成密文。例如,明文为attack begins at five,密钥为cipher,将明文按照每行6 个字母的形式排在矩阵中,形成如 下形式: a t t a c k b e g i n s a t f i v e 根据密钥cipher 中各字母在字母表中出现的先后顺序,给定一个置换:

详解加密技术概念、加密方法以及应用-毕业论文外文翻译

详解加密技术概念、加密方法以及应用 随着网络技术的发展,网络安全也就成为当今网络社会的焦点中的焦点,几乎没有人不在谈论网络上的安全问题,病毒、黑客程序、邮件炸弹、远程侦听等这一切都无不让人胆战心惊。病毒、黑客的猖獗使身处今日网络社会的人们感觉到谈网色变,无所适从。 但我们必需清楚地认识到,这一切一切的安全问题我们不可一下全部找到解决方案,况且有的是根本无法找到彻底的解决方案,如病毒程序,因为任何反病毒程序都只能在新病毒发现之后才能开发出来,目前还没有哪能一家反病毒软件开发商敢承诺他们的软件能查杀所有已知的和未知的病毒,所以我们不能有等网络安全了再上网的念头,因为或许网络不能有这么一日,就象“矛”与“盾”,网络与病毒、黑客永远是一对共存体。 现代的电脑加密技术就是适应了网络安全的需要而应运产生的,它为我们进行一般的电子商务活动提供了安全保障,如在网络中进行文件传输、电子邮件往来和进行合同文本的签署等。其实加密技术也不是什么新生事物,只不过应用在当今电子商务、电脑网络中还是近几年的历史。下面我们就详细介绍一下加密技术的方方面面,希望能为那些对加密技术还一知半解的朋友提供一个详细了解的机会! 一、加密的由来 加密作为保障数据安全的一种方式,它不是现在才有的,它产生的历史相当久远,它是起源于要追溯于公元前2000年(几个世纪了),虽然它不是现在我们所讲的加密技术(甚至不叫加密),但作为一种加密的概念,确实早在几个世纪前就诞生了。当时埃及人是最先使用特别的象形文字作为信息编码的,随着时间推移,巴比伦、美索不达米亚和希腊文明都开始使用一些方法来保护他们的书面信息。近期加密技术主要应用于军事领域,如美国独立战争、美国内战和两次世界大战。最广为人知的编码机器是German Enigma机,在第二次世界大战中德国人利用它创建了加密信息。此后,由于Alan Turing和Ultra计划以及其他人的努力,终于对德国人的密码进行了破解。当初,计算机的研究就是为了破解德国人的密码,人们并没有想到计算机给今天带来的信息革命。随着计算机的发展,运算能力的

电子商务加密解密方法比较分析

电子商务加密解密方法比较分析 摘要:本文主要对私有密钥加密法和公开密钥加密法的概念阐述和算法原理进行分析,并对两种加密法的优缺点进行了比较。 关键词:电子商务;;算法;DES;RSA;网络银行;私有密钥加密法;公开密钥加密法 对数据进行有效加密与解密,其目的是为了隐蔽数据信息,将明文伪装成密文,使机密性数据在网络上安全地传递而不被非法用户截取和破译。伪装明文的操作称为加密,合法接收者将密文恢复出原明文的过程称为解密,非法接收者将密文恢复出原明文的过程称为破译。密码是明文和加密密钥相结合,然后经过加密算法运算的结果。加密包括两个元素,加密算法和密钥。加密时所使用的信息变换规则称为加密算法,是用来加密的数学函数,一个加密算法是将普通的文本与一串字符串即密钥结合运算,产生不可理解的密文的步骤。密钥是借助一种数学算法生成的,它通常是由数字、字母或特殊符号组成的一组随机字符串,是控制明文和密文变换的唯一关键参数。对于相同的加密算法,密钥的位数越多,破译的难度就越大,安全性就越好。目前,电子商务通信中常用的有私有(对称)密钥加密法和公开(非对称)密钥加密法。 一、私有密钥加密法 (一)定义 私有密钥加密,指在计算机网络上甲、乙两用户之间进行通信时,发送方甲为了保护要传输的明文信息不被第三方窃取,采用密钥A对信息进行加密而形成密文M并发送给接收方乙,接收方乙用同样的一把密钥A对收到的密文M进行解密,得到明文信息,从而完成密文通信目的的方法。这种信息加密传输方式,就称为私有密钥加密法。上述加密法的一个最大特点是,信息发送方与信息接收方均需采用同样的密钥,具有对称性,所以私有密钥加密又称为对称密钥加密。 (二)常用算法 世界上一些专业组织机构研发了许多种私有密钥加密算法,比较著名的有DES算法及其各种变形、国际数据加密算法IDEA等。DES算法由美国国家标准局提出, 1977年公布实施,是目前广泛采用的私有密钥加密算法之一,主要应用于银行业中的电子资金转账、军事定点通信等领域,比如电子支票的加密传送。经过20多年的使用,已经发现DES很多不足之处,随着计算机技术进步,对DES的破解方法也日趋有效,所以更安全的高级加密标准AES将会替代DES成为新一代加密标准。 (三)优缺点 私有密钥加密法的主要优点是运算量小,加解密速度快,由于加解密应用同一把密钥而应用简单。在专用网络中由于通信各方相对固定、所以应用效果较好。但是,私有密钥加密技术也存在着以下一些问题:一是分发不易。由于算法公开,其安全性完全依赖于对私有密钥的保护。因此,密钥使用一段时间后就要更换,而且必须使用与传递加密文件不同的途径来传递密钥,即需要一个传递私有密钥的安全秘密渠道,这样秘密渠道的安全性是相对的,通过电话通知、邮寄软盘、专门派人传送等方式均存在一些问题。二是管理复杂,代价高昂。私有密

信息安全 实验一 古典密码算法C语言

信息安全实验报告 课程名称: _ 专业:计算机科学与技术 _2010_级_02班 实验编号:实验项目_ 指导教师_ _ 姓名:闫斌学号: 2010012854 实验成绩:___ 实验一古典密码算法 实验名称:古典密码算法 实验类型: 设计性实验 学时:4 适用对象: 信息安全 1.实验原理 古典密码算法历史上曾被广泛应用,大都比较简单,使用手工和机械操作来实现加密和解密。它的主要应用对象是文字信息,利用密码算法实现文字信息的加密和解密。下面介绍两种常见的具有代表性的古典密码算法,以帮助读者对密码算法建立一个初步的印象。 2.实验目的 通过变成实现替代密码算法和置换密码算法,加深对古典密码体质的了解,为深入学习密码学奠定基础。 3.实验环境 运行windows或linux操作系统的pc机,具有gcc(linux)、VC(Windows)等C语言编译环境。 4.实验内容 4.1替代密码算法 4.1.1 根据实验远离部分对替代密码算法的介绍,创建明文信息,并选择一个密钥k,编写替代密码算法的实现程序,实现加密和解密操作。 替代密码包括多种类型,如单表替代密码、多明码替代密码、多字母替代密码、多表替代密码等。 4.1.2 替代密码算法的远离是使用替代法进行加密,就是将明文的字符用其他字符替代后形成密文。例如字母a、b、c、d,用D、E、F、G做对应替换后形成密文。 4.1.3 代码

#include #include #include #define N 500 int main() { /*--------------------------------*/ int i=0,k,m,n,l; char str1[N],str2[N]; /*C=M+K...K is key...*/ clrscr(); /*--------------------------------*/ printf("This is a code password program......\n"); printf("Please input proclaimed in writing(M)::\n"); gets(str1);/*输入要加密的明文M*/ printf("Please input the key(K)(int)::\n"); scanf("%d",&k);/*输入密钥K*/ m=strlen(str1);/*测试明文的长度*/ printf("The M length is %d\n",m); printf("\n *\n *\n *\n***\n *\n"); printf("ciphertext(C) is ::\n\n"); for(i=0;i96&&n<123)/*对小写进行加密*/ { n=(n-97+k)%26; if(n<0) n=26+n; l=(char)(n+97); printf("%c",l); str2[i]=l; } else if(n>64&&n<91)/*对大写进行加密*/ { n=(n-65+k)%26; if(n<0)

加密算法

加密算法介绍 褚庆东 一.密码学简介 据记载,公元前400年,古希腊人发明了置换密码。1881年世界上的第一个电话保密专利出现。在第二次世界大战期间,德国军方启用“恩尼格玛”密码机,密码学在战争中起着非常重要的作用。 随着信息化和数字化社会的发展,人们对信息安全和保密的重要性认识不断提高,于是在1997年,美国国家标准局公布实施了“美国数据加密标准(DES)”,民间力量开始全面介入密码学的研究和应用中,采用的加密算法有DES、RSA、SHA等。随着对加密强度需求的不断提高,近期又出现了AES、ECC等。 使用密码学可以达到以下目的: 保密性:防止用户的标识或数据被读取。 数据完整性:防止数据被更改。 身份验证:确保数据发自特定的一方。 二.加密算法介绍 根据密钥类型不同将现代密码技术分为两类:对称加密算法(秘密钥匙加密)和非对称加密算法(公开密钥加密)。 对称钥匙加密系统是加密和解密均采用同一把秘密钥匙,而且通信双方都必须获得这把钥匙,并保持钥匙的秘密。 非对称密钥加密系统采用的加密钥匙(公钥)和解密钥匙(私钥)是不同的。 对称加密算法 对称加密算法用来对敏感数据等信息进行加密,常用的算法包括: DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。 3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。 AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高;

AES 2000年10月,NIST(美国国家标准和技术协会)宣布通过从15种侯选算法中选出的 一项新的密匙加密标准。Rijndael被选中成为将来的AES。Rijndael是在 1999 年下半年,由研究员 Joan Daemen和 Vincent Rijmen 创建的。AES 正日益成为加密各种形式的电子 数据的实际标准。 美国标准与技术研究院 (NIST) 于 2002 年 5 月 26 日制定了新的高级加密标 准 (AES) 规范。 算法原理 AES 算法基于排列和置换运算。排列是对数据重新进行安排,置换是将一个数据单元替换为另一个。AES 使用几种不同的方法来执行排列和置换运算。 AES 是一个迭代的、对称密钥分组的密码,它可以使用128、192 和 256 位密钥,并 且用 128位(16字节)分组加密和解密数据。与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。通过分组密码返回的加密数据的位数与输入数据相同。迭代加密使用一个循环结构,在该循环中重复置换和替换输入数据。 非对称算法 常见的非对称加密算法如下: RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的; DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准); ECC(Elliptic Curves Cryptography):椭圆曲线密码编码学。 ECC

用实例讲解RSA加密算法(精)

可能各位同事好久没有接触数学了,看了这些公式不免一头雾水。别急,在没有正式讲解RSA加密算法以前,让我们先复习一下数学上的几个基本概念,它们在后面的介绍中要用到: 一、什么是“素数”? 素数是这样的整数,它除了能表示为它自己和1的乘积以外,不能表示为任何其它两个整数的乘积。例如,15=3*5,所以15不是素数;又如,12=6*2=4*3,所以12也不是素数。另一方面,13除了等于13*1以外,不能表示为其它任何两个整数的乘积,所以13是一个素数。素数也称为“质数”。 二、什么是“互质数”(或“互素数”)? 小学数学教材对互质数是这样定义的:“公约数只有1的两个数,叫做互质数。”这里所说的“两个数”是指自然数。 判别方法主要有以下几种(不限于此): (1)两个质数一定是互质数。例如,2与7、13与19。 (2)一个质数如果不能整除另一个合数,这两个数为互质数。例如,3与10、5与26。(3)1不是质数也不是合数,它和任何一个自然数在一起都是互质数。如1和9908。(4)相邻的两个自然数是互质数。如15与16。 (5)相邻的两个奇数是互质数。如49与51。 (6)大数是质数的两个数是互质数。如97与88。 (7)小数是质数,大数不是小数的倍数的两个数是互质数。如7和16。 (8)两个数都是合数(二数差又较大),小数所有的质因数,都不是大数的约数,这两个数是互质数。如357与715,357=3×7×17,而3、7和17都不是715的约数,这两个数为互质数。等等。 三、什么是模指数运算? 指数运算谁都懂,不必说了,先说说模运算。模运算是整数运算,有一个整数m,以n 为模做模运算,即m mod n。怎样做呢?让m去被n整除,只取所得的余数作为结果,就

加密算法介绍及如何选择加密算法

加密算法介绍及如何选择加密算法 2008-1-23 选择字号:大 | 中 | 小 导读:随着信息化和数字化社会的发展,人们对信息安全和保密的重要性认识不断提高。民间力量开始全面介入密码学的研究和应用中,采用的加密算法有DES、RSA、SHA等。随着对加密强度需求的不断提高,近期又出现了AES、ECC等…… 关键词:密码学对称钥匙加密系统非对称密钥加密系统 一.密码学简介 据记载,公元前400年,古希腊人发明了置换密码。1881年世界上的第一个电话保密专利出现。在第二次世界大战期间,德国军方启用“恩尼格玛”密码机,密码学在战争中起着非常重要的作用。 随着信息化和数字化社会的发展,人们对信息安全和保密的重要性认识不断提高,于是在1997年,美国国家标准局公布实施了“美国数据加密标准(DES)”,民间力量开始全面介入密码学的研究和应用中,采用的加密算法有DES、RSA、SHA等。随着对加密强度需求的不断提高,近期又出现了 AES、ECC 等。 使用密码学可以达到以下目的: 保密性:防止用户的标识或数据被读取。 数据完整性:防止数据被更改。 身份验证:确保数据发自特定的一方。 二. 加密算法介绍 根据密钥类型不同将现代密码技术分为两类:对称加密算法(秘密钥匙加密)和非对称加密算法(公开密钥加密)。 对称钥匙加密系统是加密和解密均采用同一把秘密钥匙,而且通信双方都必须获得这把钥匙,并保持钥匙的秘密。 非对称密钥加密系统采用的加密钥匙(公钥)和解密钥匙(私钥)是不同的。

对称加密算法 对称加密算法用来对敏感数据等信息进行加密,常用的算法包括: DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。 3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。 AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高; AES 2000年10月,NIST(美国国家标准和技术协会)宣布通过从15种侯选算法中选出的一项新的密匙加密标准。Rijndael被选中成为将来的AES。 Rijndael 是在 1999 年下半年,由研究员 Joan Daemen 和 Vincent Rijmen 创建的。AES 正日益成为加密各种形式的电子数据的实际标准。 美国标准与技术研究院 (NIST) 于 2002 年 5 月 26 日制定了新的高级加密标准 (AES) 规范。 算法原理 AES 算法基于排列和置换运算。排列是对数据重新进行安排,置换是将一个数据单元替换为另一个。AES 使用几种不同的方法来执行排列和置换运算。 AES 是一个迭代的、对称密钥分组的密码,它可以使用128、192 和 256 位密钥,并且用 128 位(16字节)分组加密和解密数据。与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。通过分组密码返回的加密数据的位数与输入数据相同。迭代加密使用一个循环结构,在该循环中重复置换和替换输入数据。 AES与3DES的比较

DES加密算法详解

DES加密算法详解- - 对加密解密一直挺喜欢的,可还是没有怎么好好学习过,希望这是一个好的开始。 在网上搜了一下关于DES的说明,发现有些杂乱,所以还是有必要整合一下。 写了一点代码,还没有完成,不过,还不能编译通过,^_^ 刚看了一下,发现还是说得够模糊的,有机会再整理一下。 昏倒,一直运行不对,今天才仔细查出来,原来问题是出在Des_Data_P(const _b32& input, _b32 output), 我的output用了传值调用,失败呀。应该是Des_Data_P(const _b32& input, _b32 & output) DES算法的入口参数有三个: Key, Data, Mode Key 为64bit密钥,Data为64bit数据,Mode为加密还是解密。 DES算法的过程: 1. 对输入的密钥进行变换。 用户的64bit密钥,其中第8,16,24,32,40,48,56,64位是校验位,使得每个密钥都有奇数个1。所以密钥事实上是56位。对这56位密钥进行如下表的换位。 57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4,

表的意思是第57位移到第1位,第49位移到第2位,...... 以此类推。变换后得到56b it数据,将它分成两部分,C[0][28], D[0][28]。 2. 计算16个子密钥,计算方法C[i][28] D[i][28]为对前一个C[i-1][28], D[i-1][28]做循环左移操作。16次的左移位数如下表: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 (第i次) 1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1 (左移位数) 3. 串联计算出来的C[i][28] D[i][28] 得到56位,然后对它进行如下变换得到48位子密钥K[i][48] 14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 1 6, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 4 6, 42, 50, 36, 29, 32, 表的意思是第14位移到第1位,第17位移到第2位,以此类推。在此过程中,发现第9,18,22,25,35,38,43,54位丢弃。 4. 对64bit的明文输入进行换位变换。换位表如下: 58, 50, 12, 34, 26, 18, 10, 2, 60, 52, 44, 36, 28, 20, 12, 4, 62, 54, 46, 38, 30, 22, 14, 6, 64, 56, 48, 40, 32, 24, 16, 8, 57, 49, 41, 33, 25, 17, 9, 1, 59, 51, 43, 35, 27, 19, 11, 3, 61, 53, 45, 37, 29, 21, 13, 5, 63, 55, 47, 39, 31, 23, 15, 7 表的意思就是第一次变换时,第58位移到第1位,第50位移到第2位,...... 依此类推。得到64位数据,将这数据前后分成两块L[0][32], R[0][32]。 5. 加密过程,对R[i][32]进行扩展变换成48位数,方法如下,记为E(R[i][32]) 32, 1, 2, 3, 4, 5, 4, 5, 6, 7, 8, 9,

相关主题
文本预览
相关文档 最新文档