加密算法--概念篇

在最近的面试中, 被问到了加密算法,虽然回答了面试官的问题,自己总觉对于概念理解不是特别到位。本篇主要是对加密算法做一个整体的了解,其中所提到每一种算法,如果去深究,都不是一两篇文章能说清楚的,鉴于此,本篇不去谈算法的实现,不去比较算法的性能,只是梳理一些基本概念。

1. 基本术语

在密码学中,加密是指把明文通过密钥,转换为难以理解的数据(密文)的过程。 解密是指把难以理解的数据(密文)转换为明文的过程。

2. 加密算法的分类:加密算法分为对称加密算法和非对称加密算法(公开密钥加密算法)。

(1) 对称加密算法是指加密和解密用的是同一把密钥。优点:加密、解密速度快。 缺点:密钥不好维护。

(2) 非对称加密算法(Asymmetric  Cryptograph Algorithm),加密和解密使用不同的密钥,使用公钥(Public key) 加密,使用私钥(Private key)解密。

3. 常见的加密算法

3.1 对称加密算法

(1) DES (Data Encryption Standard)美国数据加密标准算法,是1972年美国IBM公司研制。 明文按64位进行分组,密钥长64位,密钥事实上是56位参与DES运算(第8、16、24、32、40、48、56、64位是校验位, 使得每个密钥都有奇数个1)分组后的明文组和56位的密钥按位替代或交换的方法形成密文组的加密方法。了解更多

(2) 3DES  (Triple DES)三重数据加密数据块算法。相当于对每个数据快进行三次DES加密。由于计算机计算能力的提升,DES算法容易被破解,3DES是通过增加数据块密钥的长度,来增加暴力破解的难度,而不是一种全新的加密算法。

(3)AES  (Advance Encryption Standard)高级加密标准,在密码学中又称为Rijndael 算法,是美国联邦政府采用的一种区域块加密标准。这个标准为了替代原先的DES标准,2001有NIST发布,并与2002年5月26日成为标准。了解更多

(4) RC2/RC4 ,RC2和RC4由RSA数据安全公司的里维斯特(RonRivest)设计,是两种可变密钥长度的加密算法,而且都是RSA数据安全公司的专有算法。有关两种算法的细节尚未公开披露。

RC2是一种可变密钥长度的对称分组密码,打算作为DES的一种代替物。它以64比特分组加密数据。据公司声称,RC2软件实现的速度为DES的两倍。

Rc4是一种可变密钥长度的对称流密码。据公司声称.其速度为DES的10~100倍。两种算法的编码规模非常紧凑,其速度与密钥长度无关。


3.2 非对称加密算法

(1) RSA    是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。了解更多

(2) ECC (Elliptic Curves Cryptography)椭圆曲线加密算法,最初由Koblitz和Miller两人于1985年提出,其数学基础是利用椭圆曲线上的有理点构成Abel加法群上椭圆离散对数的计算困难性。

(3) DSA (Digital Signature Algorithm) 数字签名算法,是Schnorr和EIGamal 签名算法的变种,被美国NIST称作标准的数字签名标准(DSS, Digital Signature Standard),严格来说不算加密算法。

3.3 RSA和DSA的区别

(1) DSA是基于整数有限域离散对数难题的,其安全性与RSA相比差不多。

(2) DSA 数字签名和认证中,发送者使用自己的私钥对文件或者消息进行签名,接受者收到消息后,使用发送者的公钥来验证签名的真实性,接受者由此可知这条消息确实来在于拥有私钥的发送者,公钥的形式就是数字证书。例如,从网上下载安装程序,一般都带有程序制作者的数字签名,可以证明改程序的确是该作者(公司)发布的而不是第三方伪造的且未被篡改过(身份认证/验证)。

(3) DSA 只是一种算法,和RAS的不同之处在于它能不能用作加密和解密,也不能进行密钥交换,只用于签名,它比RSA要快很多。


4. 哈希算法

4.1 哈希(Hash)和加密(Encrypt)区别

哈希是把目标文本转换为具有相同长度、不可逆的杂凑字符串(消息摘要)。

加密是指把目标文件转换为长度不同、可逆的密文。详细介绍

4.2 常见的哈希算法

(1) MD5 (Message Digest Algorithm5) 消息摘要算法第五版,是RSA公司研发的一种单向散列算法,非可逆,相同的明文产生相同的密文。

特性:

压缩性:任意长度的数据,算出的MD5值长度都是固定的。128位的MD5散列被表示为32位16进制数字;

容易计算:从原数据计算出MD5值很容易;

抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别;

强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。

(2) SHA 1(Secure Hash Algorithm) 可以对任意长度的数据运算生成一个160位的数值。主要适用于数字签名标准里定义的DSA算法。对于长度小于2^64位的消息,SHA-1 会产生一个160位的消息摘要。

特性:

不可以从消息摘要中复原信息;

两个不同的消息,产生相同消息摘要的概率10^48 分之1 ,一般认为不会产生相同的消息摘要。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • 本文主要介绍移动端的加解密算法的分类、其优缺点特性及应用,帮助读者由浅入深地了解和选择加解密算法。文中会包含算法的...
    苹果粉阅读 11,451评论 5 29
  • 这篇文章主要讲述在Mobile BI(移动商务智能)开发过程中,在网络通信、数据存储、登录验证这几个方面涉及的加密...
    雨_树阅读 2,330评论 0 6
  • 在开发应用过程中,客户端与服务端经常需要进行数据传输,涉及到重要隐私安全信息时,开发者自然会想到对其进行加密,即使...
    闲庭阅读 3,259评论 0 11
  • 概述 之前一直对加密相关的算法知之甚少,只知道类似DES、RSA等加密算法能对数据传输进行加密,且各种加密算法各有...
    Henryzhu阅读 3,001评论 0 14
  • 今天是21天马甲线计划的第一天,锻炼了一个半小时左右。锻炼的时候好累啊,跑步的时候有放弃的念头,做力量训练的时候也...
    lemonnade阅读 375评论 0 0