现以分组密码算法(DES和SM4)、公钥密码算法(RSA和SM2)、摘要算法(SM3)为例,谈谈国际算法和国密算法的区别:

一.分组密码算法——国际DES、国产SM4

  分组密码就是将明文数据按固定长度进行分组,然后在同一密钥控制下逐组进行加密,从而将各个明文分组变换成一个等长的密文分组的密码。其中二进制明文分组的长度称为该分组密码的分组规模。

  分组密码的实现原则如下:

  (1)必须实现起来比较简单,知道密钥时加密和脱密都十分容易,适合硬件和(或)软件实现.

  (2)加脱密速度和所消耗的资源和成本较低,能满足具体应用范围的需要.

  分组密码的设计基本遵循混淆原则和扩散原则。

  混淆原则就是将密文、明文、密钥三者之间的统计关系和代数关系变得尽可能复杂,使得敌手即使获得了密文和明文,也无法求出密钥的任何信息;即使获得了密文和明文的统计规律,也无法求出明文的任何信息。

  扩散原则就是应将明文的统计规律和结构规律散射到相当长的一段统计中去。也就是说让明文中的每一位影响密文中的尽可能多的位,或者说让密文中的每一位都受到明文中的尽可能多位的影响。

      DES算法

  DES算法是在美国NSA(国家安全局)资助下由IBM公 司开发的密码算法,其初衷是为政府非机密的敏感信息提供较强的加密保护。它是美国政府担保的第一种加密算法,并在1977年被正式作为美国联邦信息处理标 准。DES主要提供非军事性质的联邦政府机构和私营部门使用,并迅速成为名声最大,使用最广的商用密码算法。

     SM4算法

2006年我国公布了无限局域网产品使用的SM4密码算法。这是我国第一次公布自己的商用密码算法。

  SM4算法的整体结构图:

国际的DES算法和国产的SM4算法的目的都是为了加密保护静态储存和传输信道中的数据,主要特性如下:

  从算法上看,国产SM4算法在计算过程中增加非线性变换,理论上能大大提高其算法的安全性,并且由专业机构进行了密码分析,民间也对21轮SM4进行了差分密码分析,结论均为安全性较高。

二.公钥密码算法——国际RSA、国产SM2

  公钥密码学与其他密码学完全不同, 使用这种方法的加密系统,不仅公开加密算法本身,也公开了加密用的密钥。

  公钥密码系统与只使用一个密钥的对称传统密码不同,算法是基于数学函数而不是基于替换和置换。公钥密码学是非对称的,它使用两个独立的密钥,即密钥分为公钥和私钥,因此称双密钥体制。双钥体制的公钥可以公开,因此称为公钥算法。

  公钥算法的出现,给密码的发展开辟了新的方向。公钥算法虽然已经历了20多年的发展,但仍具有强劲的发展势头,在鉴别系统和密钥交换等安全技术领域起着关键的作用

  公钥算法的加密与解密由不同的密钥完成,并且从加密密钥得到解密密钥在计算上是不可行的。通常,公钥算法的两个密钥中任何一个都可以作为加密而另一个用作解密,但不是所有的公钥算法都是如此。

RSA算法

  RSA算法由Rivest、Shamir、Adleman于1978年首次发表,是迄今为止最容易理解和实现的公钥算法,已经受住了多年深入的***,其理论基础是一种特殊的可逆模幂运算,其安全性基于分解大整数的困难性。

  RSA算法既可用于加密,又可用于数字签名,已得到广泛采用,并被许多标准化组织(如ISO、ITU、IETF和SWIFT等)接纳。目前许多国家标准仍采用RSA算法或它的变型。

  RSA算法的实现如下:

  (1) 实现者寻找出两个大素数p和q

  (2) 实现者计算出n=pq 和φ(n)=(p-1)(q-1)

  (3) 实现者选择一个随机数e (0<e<></e<>

  (4) 实现者使用辗转相除法计算d=e-1(modφ(n))

  (5) 实现者在目录中公开n和e作为公钥

  密码分析者***RSA体制的关键点在于如何分解n。若分解成功使n=pq,则可以算出φ(n)=(p-1)(q-1),然后由公开的e,解出秘密的d。所以说RSA算法的安全性基于分解大整数的困难性。

       SM2算法

  SM2算法由×××于2010年12月17日发布,全称为椭圆曲线算法。椭圆曲线并不是椭圆,之所以称为椭圆曲线是因为它们是用三次方程来表示的,并且该方程与计算椭圆周长的方程相似。一般而言,椭圆曲线的三次方程形为:

  y2+axy+by=x3+cx2+dx+e [其中a,b,c,d和e是满足某些条件的实数,因为方程中的指数最高是3,所以我们称之为三次方程,或者说方程的次数为3]

  SM2算法使用的方程为:y2= x3 + ax + b

  SM2算法实现如下:

  (1) 选择Ep(a,b)的元素G,使得G的阶n是一个大素数

  (2) G的阶是指满足nG=O的最小n值

  (3) 秘密选择整数k,计算B=kG,然后公开(p,a,b,G,B),B为公钥,保密k,k为私钥

  加密M:先把消息M变换成为Ep(a,b)中一个点Pm,然后,选择随机数r,计算密文Cm={rG,Pm+rP),如果r使得rG或者rP为O,则要重新选择r。

  解密Cm: (Pm+rP)-k(rG)=Pm+rkG-krG=Pm

  SM2算法的安全性基于一个数学难题”离散对数问题ECDLP”实现,即考虑等式Q=KP,其中Q、P属于Ep(a,b),K<p,则:1) p="" 已知q和p,计算k,是困难的。<="">

  现今对椭圆曲线研究的时间短,经过许多优秀的数学家的努力,至今一直没有找到亚指数级算法。正是由于目前所知求解ECDLP的最好方法是指数级的,这使得我们选用SM2算法作加解密及数字签名时,所要求的密钥长度比RSA要短得多。

  国际的RSA算法和国产的SM2算法的主要特性对比如下:

三.摘要算法——MD5、SHA1、国产SM3


  摘要函数在密码学中具有重要的地位,被广泛应用在数字签名,消息认证,数据完整性检测等领域。摘要函数通常被认为需要满足三个基本特性:碰撞稳固性,原根稳固性和第二原根稳固性。

  2005年,Wang等人给出了MD5算法和SHA-1算法的碰撞***方法,现今被广泛应用的MD5算法和SHA-1算法不再是安全的算法。

MD5算法

MD5为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。对MD5加密算法简要的叙述可以为:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成—个128位散列值。

MD5被广泛用于各种软件的密码认证和钥匙识别上。MD5用的是哈希函数,它的典型应用是对一段信息产生信息摘要,以防止被篡改。

SHA1算法

SHA1主要适用于数字签名标准里面定义的数字签名算法。对于长度小于2“64位的消息,SHA1会产生一个160位的消息摘要。当接收到消息的时候,这 个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,那么这时候就会产生不同的消息摘要。SHA1不可以从消息摘要中复原信息, 而两个不同的消息不会产生同样的消息摘要。这样,SHA1就可以验证数据的完整性,所以说SHA1是为了保证文件完整性的技术。

       SM3算法

   SM3密码摘要算法是中国×××2010年公布的中国商用密码杂凑算法标准。SM3算法适用于商用密码应用中的数字签名和验证,是在SHA- 256基础上改进实现的一种算法。SM3算法采用Merkle-Damgard结构,消息分组长度为512位,摘要值长度为256位。

  SM3算法的压缩函数与SHA-256的压缩函数具有相似的结构,但是SM3算法的设计更加复杂,比如压缩函数的每一轮都使用2个消息字。

  现今为止,SM3算法的安全性相对较高。(来源:中钞研究院)

四.数字签名与信息摘要的应用

1.数字签名技术是将摘要信息用发送者的私钥加密,与原文一起传送给接收者。

2.接收者只有用发送的公钥才能解密被加密的摘要信息,然后用HASH函数对收到的原文产生一个摘要信息,与解密的摘要信息对比。

3.如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过。

4.因此,数字签名与信息摘要能够验证信息的完整性。

转载于:https://blog.51cto.com/wangzhaoli/1795936

DES/AES、SM4、RSA、SM2、SM3相关推荐

  1. DES AES TEA SM4比较

    DES AES TEA SM4 作业题目: 从网上搜集DES,AES,TEA和SM4的源码,并在本地环境编译,编写一个小程序,测试四种加密算法的加密速度. 从测试过程中观察,各个加密算法中对性能影响最 ...

  2. C#加密解密(DES,AES,Base64,md5,SHA256,RSA,RC4)

    一:异或^简单加解密(数字类型) 1:原理: 异或用于比较两个二进制数的相应位,在执行按位"异或"运算时,如果两个二进制数的相应位都为1或者都为0,则返回0;如果两个二进制数的相应 ...

  3. iOS 使用 SM2 SM4 加解密,SM2 签名验签及 SM3 签名

    前言 对于开发人员,开发中加解密是经常用到的,常见的密码算法 MD5.SHA.AES.DES,RSA 等等,这些无一例外都是国外的加密算法.基于安全和宏观战略考虑,我国从 2010 年先后推出了 SM ...

  4. 【密码算法 之零】对称算法(DES,、3DES、 AES、DM5、HMAC、CMAC、SHAxx、SM3、SM4),非对称算法(RSA、ECC、ECDSA、ECDH、SM2、SM9...)

      由于工作的需要,在过去的两年中学习.适配了很多算法,包括对称算法.非对称算法.国密算法.国际算法等.为了逼迫自己能够牢记并掌握这些算法的基本知识点,故本人写了一个关于算法的专栏(持续更新中...) ...

  5. 浅谈DES、RAS、SHA-256与SM1、SM2、SM3、SM4区别

    我们今天浅谈一下,目前密码学中应用最为广泛的一些加密算法.并对这些算法做一些比较. 一.概念介绍 国密算法是什么? 国密算法是由国家密码局发布,包含SM1.SM2. SM3. SM4. SSF33算法 ...

  6. 前端国密加解密使用方法SM2、SM3、SM4

    国密算法,即国家商用密码算法.是由国家密码管理局认定和公布的密码算法标准及其应用规范,其中部分密码算法已经成为国际标准.如SM系列密码,SM代表商密,即商业密码,是指用于商业的.不涉及国家秘密的密码技 ...

  7. 密码算法(SM1、SM2、SM3、SM4、同态加密、密态计算、隐私计算和安全多方计算)

    文章目录 SM1 对称密码 SM2 椭圆曲线公钥密码算法 SM3 杂凑算法 SM4 对称算法 同态加密 密态计算和隐私计算 安全多方计算技术 安全多方计算的应用场景 对称加密算法 非对称加密算法(公钥 ...

  8. 国密(国产密码)SM2、SM3、SM4 C#实现

    参考:http://www.voidcn.com/article/p-zlnqwzbd-cm.html 这两天与联通对接流量卡实名相关接口.他们用到了国密SM3,一个比较冷门的加密(或者说是签名)方式 ...

  9. sm4 的s盒_商密算法SM2、SM3、SM4的用途和原理

    SM1对称密码 SM1 算法是分组密码算法,分组长度为128位,密钥长度都为 128 比特,算法安全保密强度及相关软硬件实现性能与 AES 相当,算法不公开,仅以IP核的形式存在于芯片中. 采用该算法 ...

最新文章

  1. 线性代数与矩阵论 定理 1.5.6 拉格朗日插值公式
  2. 如何高效的做机器学习项目
  3. 为什么mysql打开闪屏_mysql登录闪屏问题解决办法
  4. [HDOJ5869] Different GCD Subarray Query(RMQ,树状数组,离线)
  5. 蓝桥杯 历届试题 合根植物(并查集)
  6. PHP学习:字符串操作和正则表达式
  7. 如何重新定义云数据中心的资源利用率
  8. 【转】深入理解JVM—JVM内存模型
  9. Android_(服务)Vibrator振动器
  10. 2020年中国林业有害生物发生及防治面积统计情况,林业有害生物防控措施工作的开展刻不容缓「图」
  11. 如何把图片上的文字转换成word的文字。
  12. 目标检测从两阶段R-CNN系列到单阶段YOLO系列精炼
  13. 求解多变量非线性全局最优解_约束条件下多变量非线性函数的区间算法.doc
  14. 数据在链路层传播相关时间计算
  15. 弹性裸金属服务器EBM
  16. python变量、类型及转换
  17. 【已鸽】手机添加nfc模块模拟ic卡开门禁
  18. C#中的Action是什么意思
  19. 商业数据分析师——IT和商业之间的纽带
  20. Undefined control sequence. \begin{document}

热门文章

  1. 纽约时报:华为大举挺进美国市场
  2. TSQL:判定一段数组连续的数字段有多少的方案
  3. 【设计模式】备忘录模式
  4. Mac系统的JDK8默认安装路径
  5. Web开发者推荐的最佳HTML5/CSS3代码生成器
  6. 【反传销】春节一个短暂误入传销和脱身的真实故事以及对技术的思考
  7. ios开发-Storyboard在多个viewcontroller之间导航的实现
  8. Localhost与数据库连接
  9. wpgcms---流程控制
  10. IIS 的身份验证简要说明 - 摘录