密码的前世今生

密码Cryptology,是一种混淆人们视听的一种技术。将可以被正常认知的信息转变成不可以被识别的信息。有交流就有信息,有信息的传递,自然会产生秘密,这是文明发展的必然。密码的出生自然是要成为传递隐蔽的不想让人知道的事情的工具。就如同,人们离开茹毛饮血的时期开始寻找枝叶遮蔽身体一样。是人们自我文明的又一进步。

众所周知,战争能够推动人类社会的进步。密码的起源也与战争有关。那是公元前405年。在伯罗奔尼撒战争的最后阶段。雅典的信使在自己的腰带里面写满杂乱无章无法理解的希腊字母。意图联合波斯夹击斯巴达。却被斯巴达人截获并破译,而密语的破译也宣告着行动的失败。可以说密码是一门延续了千年的学科,他经久不衰的秘密,不仅在于能够帮助战争的胜利,更是数学上一次又一次的突破,它给人们带来一次又一次的挑战。每一次突破都给人带来无尽的喜悦。

从腰带密码到伟大密码,从军事到生活。从两次世界大战到商业加密。时代在不断更换,技术在不断更新,密码学也在不断更换着它美丽的面具。等待着有缘人揭开它,寻找她的美貌。

有人说密码是时代的产物,满足了一个时代的需求,当战争来临时他可能是救命的稻草,当政权更替时他可能是致命的烽火。和平时期他是商人致富秘密的保护符。恋爱时期它是笛卡尔的心形函数。只要有需要它就会适时地出现在自己该出现的位置。但它也终究是时代的产物,随着历史车轮滚滚向前,它也必须更换自己的而样貌。

有文字就有密码,从古至今亦是如此。无论国内还是国外,军队和皇室是使用密码最为频繁的。19世纪中叶以前的密码可以通称为古典密码。不仅有象征军队调兵使用的符节,来避免有人调遣军队发生叛变。亦有重新创建的专门用来记载的新型文字,以免有人窃取古埃及皇室的家族秘密。在高卢战争中凯撒大帝为了取得战争胜利使用的则是通过错位加密的Caesar密码来传递军机要务。可无论是Polybius密码还是多表代替密码,亦或是“不可破译”的维吉尼亚密码。都有一定的局限性。研究古典密码可以从两个方面着手,一是将明文字符改写为另外的一种字符,只要重新替换回来。就能够看到明文。另一种方法就是把明文原有的顺序打乱。但是现在看来,古典密码依然处于手工作业的时代,很容易被如今的计算机穷举来破解。即便多表代换适时出现,但其安全程度依然非常低下。

古典密码的统治终将过去,新型密码也终将上线。工业时代的来临,带来了大量的机械,机械的自动运转使加解密上升到了一个新的台阶。在第二次世界大战中工业化机械带来的科学进步为战争带来的便利则表现的尤为明显。德军传递军机信息进行加密所使用的Enigma则是工业机械--恩尼格码密码机的产物。它通过一排排转子反复进行排列组合进行加密信息。每条加密信息的起始位置也由机器的操作员来调整决定,每条信息的加密方法都不一样。每个信息所含有的字母都在接线板上两两配对。通过转变接线位置,接线板上敲下的字母会变成另外的字母,且不同的字母之间两两配对,使密文变得更为复杂。由于加密规则可以实时变化。密文变得更加不可侦测。一个恩尼格码密码机拥有三个转子,而每个转子拥有26个数字。其可产生的组合有10586916764420000种,这样的安全性是古典密码无可比拟的。人们通过简单的暴力破解的方式已经无法将其破译。毕竟,人力有时尽,但机械则可以不停地运转。恩尼格码密码是对称加密算法的流加密。它的复式替换方式为之后密码的发展做出了重要的指示作用。

时代更迭,科技日新月异。陈旧的烟尘终究会被碾压在历史的车轮下。推陈出新这是发展的必然。1946年随着第一个电子管高级信息处理工具的出现,人类的计算能力得到了空前的发展。由于运算量的提升,人们迫切需要新的加密算法来保证传递信息的安全。于是C.E.香农站了出来,提出了《保密系统通信理论》。这篇文章就仿佛一场甘霖,瞬间就滋润了枯涸已久的密码学大陆。让植物有了生长的方向。保密系统的五条标准,也指引着理论研究密码的新方向。不仅承接了古典密码,同时为研究现代密码开辟了新的道路。当1977年DES成为美国数据加密标准。时间正式进入现代密码的时代。由于计算机的长足发展。现代密码学的主要研究方向就是如何保证端到端的信息安全。科技的进步使得密码学繁荣发展,仿佛进入了一个百花齐放百家争鸣的时期。各种各样的算法层出不穷。各个区域、国家、企业、个人,都开始以不同的方式研究新算法新技术来保证自己的信息安全。欧洲启动European Network of Excellence for Cryptology计划来征集序列密码。序列密码的以一个字母或者一个比特作为信息处理的最小单位。随着时间的推移,序列密码的加密也在不停地变换。加密的运转效率高,运转时造成的错误率低。扩散范围小。分组密码则和序列密码有所不同,分组密码并不跟随时间变换能够扩散到很广的范围中,但容易错误传播。分组密码中DES算法则成为了美国加密的标准算法。在之后的征集中渐渐地AES大有取代DES的趋势。除了流密码和分组密码。公钥算法的出现不仅能够将数据进行加密,也可以对信息进行数字签名。但是运行效率低下,实现困难。并不适用于当有大量的数据需要加密时使用。

当一个个密码学家沉浸在数学理论,一步步分解因数的时候。一种更高的密码分析技术诞生——量子计算机。它无与伦比的计算速度信息处理能力使得所有密码在他面前都黯然失色。虽然量子密码离我们的生活还很遥远,但却是未来密码的研究方向。

密码学的相关概念

密码学是一门研究信息能够安全保密地传输存储的一门学科。其大致可分为两个分支:

·Cryptography密码编码学:是对密码体制进行设计的学科,主要研究如何编码信息。隐藏真实信息。

编码学,运用语言学、数学、电子学、声学、信息论、计算机科学等学科的知识,研究如何根据通信双方约定的法则将明文变为密文,进行加密和变换,以及编制密码的原则、方法与技术手段等,以保证通信达到保密的一门学科。

·Cryptanalytics密码分析学:来源于希腊语kryptós,意为隐藏。 是一个研究密码或系统中缺陷的一门学科。致力于从加密的信息中得到原有信息。

两者相辅相成,既是敌对的矛盾关系,又是相互结合发展的关系。互相结合才形成了密码学。

·明文Plaintext:没有被加密过的信息,能够被人直接读取的文本、音像等。

·密文Ciphertext:明文通过加密得到的不可被直接阅读的文字。

·加密Encryption:通过一些手段将明文变换成密文的过程。

·解密Decryption:由密文会恢复到明文的过程。

·密钥Key:控制加密和解密算法操作的数据处理, 分别称作加密密钥和解密密钥。

加密技术通常分为两大类:“对称式”和“非对称式”。

密码体制由五要素组成,P(Plaintext明文集合),C(Ciphertext密文集合),K(Key密钥集合),E(Encryption加密算法),D(Decryption解密算法)

 分类

按照从古至今的发展顺序,可分为工业革命前的古典密码,和工业革命后的现代密码。

·古典密码主要以一个一个的文字字母为加密单位。

·现代密码则以信息链加密为主。

若以把明文密文互相转换的参数,来作为标准的话,可划分为私钥加密和公钥加密。

·私钥加密算法中收发双方共同保守同一条密钥的安全,不能使其他人能够知晓密钥的参数。长时间使用的话密钥的安全就无法保证,如果频繁的更换密钥。又需要分配大量的空间和成本来存储新密钥。使用此密钥进行加密或者解密。由于流程简单,所以适用于大量数据进行加密或者解密。但需要花费大量的时间在管理并保证密钥的安全上。

RSA算法的保密强度随其密钥的长度增加而增强。但是,密钥越长,其加解密所耗用的时间也越长。因此,要根据所保护信息的敏感程度与攻击者破解要花费的代价值不值得以及系统所要求的反应时间来综合考虑,尤其对于商业信息领域更是如此。

由于进行的都是大数计算,使得RSA最快的情况也比DES慢上好几倍,无论是软件还是硬件实现。速度一直是RSA的缺陷。一般来说只用于少量数据加密。RSA的速度比对应同样安全级别的对称密码算法要慢1000倍左右

RSA在选择密码攻击面前显得很脆弱。一般攻击者是将某一信息进行下伪装,让拥有私钥的实体签名;然后,经过计算就可得到它所想要的信息

·非对称加密算法通过两个密钥的相互结合来保证信息的安全。公钥是所有人都可以访问的。就私钥而言,使用者一有自己的私钥,使用者二也有自己的私钥。一方面能够保证私有密钥不会被泄。能够更好地保证私有密钥的安全。因为各自有各自的密钥,这样就不用频繁的更换密钥。这就从一定程度上保证了密钥的安全性。也更加便于管理。其流程如下:使用者一把生成的公开的密钥公开。使用者二可以使用这个公开的密钥把需要传输的信息进行加密再发送给使用者一。使用者一使用自己的私有密钥对使用者二发送的加密后的信息进行解密。如果使用者一发送给使用者二信息时。使用者二使用自己的私有密钥进行解密。因为有私钥的存在,即便有人获得了公开密钥,截取了所要传输的信息,但也无法解开其中的信息。

如果按照未加密的信息被处理加密的方法来对其进行区分的话,可分为分组密码和流密码。

·block cipher 分组密码把明文数字分割成长度为n的若干组。每一个分组在其所拥有的密钥的处理下生成密文数字。

·流密码,从一次通信进行一次随机加密而来。

2.2.2   对称密钥加密系统

对称密钥:BlowFish算法

对称密钥加密必须要求双方在加密信息或者解密信息的时候使用双方提前沟通好的共同享有的密钥。就好像一个房门有多把钥匙,但是不同进入者的钥匙必须相同。但是有权限进入房间的人,必需保护自己要是的安全,才能保证房间的安全。如果被别人捡到钥匙,房间的安全就无法保证。高强度的算法就好像特别的锁芯,如果锁芯设计的特别简单,房间也特别容易被突破。

1977年NIST依照第二次世界大战德国使用的恩格玛加密机的加密方法提出了DES数据加密标准。然后被广泛接纳。DES是最为常见的对称加密算法。

设计DES为了对抗不法的攻击者,遵循了分组密码的设计原则:confusion和diffusion。

Confusion:混淆是为了加密生成的密文和加密所使用的密钥之间的关系变的更为复杂。这种做法是为了搅乱密码分析者的思路。让其无法分析出两者之间的关系。

Diffusion:扩散则是为了使生成的的明文尽可能的的影响到被加密的密文。以防止不法者逐句逐句对秘钥进行破译。

DES算法是一种把明文进行分组的加密机制,一段一段进行加密,各个分段形成自己的密文。最后将各个分段的密文进行组合形成最终的密文。在加密的过程中,所有数据会通过置换运算把所有数据全部打乱重排。

AES算法:

而AES则是为了取代DES广泛使用而诞生的对称密码。因为随着计算机的发展,工业制造的的原件越来越精细。使得计算机的性能越来越强。计算能力也越来越强。为了征集更加高级更加安全的加密标准。NIST的呼声得到了全球密码学家的积极回应。最终AES选择了分组长度为128比特,密钥长度128比特、192比特、256比特三个版本。

AES加密一共有四个操作:SubBytes、ShiftRows、MixColumns、AddRoundKey。解密的每一步都有与之对应的加密算法的逆操作。加密解密的所有操作顺序时正好相反的。正是由于这样的操作才使得信息的加密有了安全的保证。

AES(Advanced Encryption Standard):高级加密标准,对称算法,是下一代的加密算法标准,速度快,安全级别高,在21世纪AES 标准的一个实现是 Rijndael 算法

 公开密钥加密系统

不同于上述的对称加密系统,公开密钥加密体系是为了保护信息确保信息安全传输,时间进入新时代的一个标志。他的出生使得加密的密钥和解密的密钥不再共用相同。任何人都可以把加密的密钥公之于众,而不需要耗费大量的成本和空间来维护保护他的安全。当密文到达自己手中后只需要使用自己的私钥来对信息加以解密,来获取自己需要的信息。使用者只需要保证

自己的私钥不会泄露出去,只要保证了只要保证了私钥的安全,也就保证了信息传递的安全。

非对称加解密只有对称加密速度的1/1000, 所以非对称只进行加密密钥的交换也就是把对称加密密钥通过私钥加密发给接对方,对方通过公钥解密得到对称密钥。数据真正是使用对称密钥加解密,私钥公钥加解密只要保证对称加密正确就行了。

RSA算法:

RSA公开密钥密码体制是一种使用不同的加密密钥与解密密钥,“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。

广泛的加密算法,像数字签名,数字证书,SSH,HTTPS加密连接全部都是他的典型应用。

对于解密和解密来讲,实际上就是要找一个单向函数,函数的正向运算要很容易,但是函数的逆向运算要很难。

对于RSA这种情况,把公玥和信息转递给函数进行运算得到密文的过程要很容易,但是反过来,如果有人看到了密文,知道了密钥,要想得到原文这个过程要非常困难。

而且这个函数还要有一个特点,如果拥有特定的提示信息,那么逆向操作也会由很难变得很容易,也就是说,如果知道私钥,那么解密过程也会变得很容易。

在公开密钥密码体制中,加密密钥(即公开密钥)PK是公开信息,而解密密钥(即秘密密钥)SK是需要保密的。加密算法E和解密算法D也都是公开的。虽然解密密钥SK是由公开密钥PK决定的,但却不能根据PK计算出SK。

正是基于这种理论,1978年出现了著名的RSA算法,它通常是先生成一对RSA密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外公开,甚至可在网络服务器中注册。为提高保密强度,RSA密钥至少为500位长,一般推荐使用1024位。这就使加密的计算量很大。为减少计算量,在传送信息时,常采用传统加密方法与公开密钥加密方法相结合的方式,即信息采用改进的DES或IDEA对话密钥加密,然后使用RSA密钥加密对话密钥和信息摘要。对方收到信息后,用不同的密钥解密并可核对信息摘要。

数字签名:

在很多场合我们都需要在文件上签字,为什么不直接用电脑打呢, 这就是为了日后确认文件确实是你自己的签名,每个人的笔迹都不一样。
数字签名也是一样的作用:
保证B收到的是A发来的信息确实是A发的,而不是C冒充 A发的。

这就是非对称加密中的私钥和公钥的特性:私钥加密只能公钥解密,公钥加密只能私钥解密。

其中私钥加密的数据,只能由对应的公钥解密,正好可以做数字签名。

数字签名算法依靠公钥加密技术来实现的。在公钥加密技术里,每一个使用者有一对密钥:一把公钥和一把私钥。公钥可以自由发布,但私钥则秘密保存;还有一个要求就是要让通过公钥推算出私钥的做法不可能实现。私钥将待传送数据计算, 然后用私钥加密摘要得到数字签名, base64之后附带加密数据一起发送过去。

接收方 用公钥验证这个数字签名: 公钥解密数字签名,如果解密失败,则对方身份不正确。

然后用解密数据部分,解密之后也计算一次,如果hash值不一样,则表示文件被篡改,如果文本被修改过。

数字签名有两种功效:一是能确定消息确实是由发送方签名并发出来的,因为别人假冒不了发送方的签名。二是数字签名能确定消息的完整性。因为数字签名的特点是它代表了文件的特征,文件如果发生改变,数字摘要的值也将发生变化。不同的文件将得到不同的数字摘要。 一次数字签名涉及到一个哈希函数、接收者的公钥、发送方的私钥。

数字签名的文件的完整性是很容易验证的(不需要骑缝章,骑缝签名,也不需要笔迹专家),而且数字签名具有不可抵赖性(不可否认性)。

数字签名的目的之一就是在网络环境中代替传统的手工签字与印章,有着重要作用[18]。

数字签名是个加密的过程,数字签名验证是个解密的过程。              

可行性分析

从网络日新月异的发展而言,由于其扩散范围广,基于网络产生的工作众多。个人信息企业信息的泄露数不胜数。无论是被泄露,还是被破坏。网络安全问题始终离不开人们的话题。

如何加强对电脑硬件的管理,防止内部信息泄露成为急需解决的问题。

企业作为一个大的整体,人员交往复杂,来往信息数不胜数,信息安全泄密的风险也成几何型增长。

其可能泄密的途径无非为:

·1.服务器泄密:

网络维护人员拷贝资料。或在远程登陆时,将密码拷贝在自己的机器里

·2.工作地点泄密

自己不在岗时被其他人翻阅自己的电脑资料。或者用移动优盘等互相拷贝资料。

·3.网络泄密

随意将信息设置为共享。随意点击不认识的程序,上不熟悉的网站。

所以拥有一个加密系统是非常重要的。

  RSA加密系统的可行性

通过每一个输入值都会给出一个随机输入的函数值的单向函数,作为基础原理实现的公开密码体制自七十年代后引发了广大关注。时间在历史的长河中慢慢流淌,RSA也在密码的河床上慢慢生长。时至今日,它已经在广大的范围内得到了认可。这种认可不仅仅体现在国家层面上,许多企业为了自身信息的安全,也选择了RSA作为服务自己的加密标准。我们在生活中在不知不觉中其实无时不刻在接触RSA加密算法。

苹果APP的签名验证就是运用了RSA非对称加密技术。

首先,Mac电脑通过钥匙串中的证书助理,从证书颁发机构请求CSR文件,填写常用邮箱并选择将其保存在磁盘,即可。CSR文件包含我们的公钥M。

拿到CSR文件后,移步至苹果开发者中心,创见证书,上传我们刚刚创建好的CSR文件,一路Next下去,最终会给我们生成一个cer证书文件,下载到电脑中,双击安装到钥匙串。这个cer文件包含了两个信息,即图中所标明的hash值和公钥M。这个hash值是用私钥A对公钥M的数字签名,这个hash很有意思,也是整个双重验签过程中最重要的一环。

在我们开发完成后,将我们的应用打包生成IPA。在通过Xcode导出IPA的过程中,大家有没有注意到要导入证书文件,这个证书文件其实就是步骤二拿到的证书。同时会用电脑的私钥M对IPA进行签名。此时我们的IPA包中就包含了步骤二中的证书和用私钥M进行加签的App签名。

拿到IPA包以后,就可以安装到我们的iPhone手机上了。这也是决定我们的IPA文件能否装到iPhone手机上最关键的一步了,此前所有的努力,都是为了这一刻的验证。那我们来看一下这里发生了些什么。

我们的iOS手机中存有公钥A,可以对IPA包中的cer文件进行验签。因为cer文件是通过私钥A进行加签的,私钥A加签,公钥A验签没毛病,第一层验签。这里主要是为了保证所安装的应用是通过App Store允许的,不被允许的应用第一道关口就通不过。所以苹果手机能否安装应用,这个控制权还是牢牢掌控在App Store手中。

现在开始第二次验签,验签通过后,就可以拿到公钥M。由于在生成IPA时候,苹果电脑会用私钥M对IPA进行签名。此时我们拿到了公钥M,就可以对App进行验签了。验签成功后,IPA包就可以顺利的安装到手机上了,否则安装失败。这一步保证了安装到我们苹果手机上的应用都是经过开发者开发的App,包括从App Store或者直接通过电脑安装的应用。杜绝了往手机上安装非开发App的情况。

 AES加密系统的可行性

AES加密算法是一种极具代表性的对称加密算法,由于其对称性,使得算法的加密和解密的结构对称,密钥也相同,算法结构比较简单。AES还有加密解密速度迅速和编码紧凑等特点,具有很大的开发潜力和较高的使用价值,被应用至信息保护,电子安全等方面及领域。虽然高级加密标准也有不足的一面,但是,它仍是一个相对新的协议。因此,安全研究人员还没有那么多的时间对这种加密方法进行破解试验。我们可能会随时发现一种全新的攻击手段会攻破这种高级加密标准。至少在理论上存在这种可能性

网络的飞速发展就好像如洪水一般不可抵挡,上到国家,下到市井小民都能享受到网络的便捷。无论是军事、经济、人文、生活。它与我们的生活息息相关。因为它的存在,我们不再相隔万里,若大的地球小的好像一个村庄。但,俗语说得好,有好的的一面,自然有坏的一面。网络和平发展的背面则是不法分子的暗流涌动。网络安全是我们迫切需要的东西。

2012年国内许多重量级的购物网站——淘宝网、当当网、1号店等的点用户信息被集体泄露。凡此种种无一不在为我们敲响警钟。造就安全的网络环境刻不容缓。作为网络安全的最低保障则是密码技术。

为文件加密,为信息加密。是我们保证自身网络安全的最低保证。我们通过数学算法,来将信息进行初步转换,在设计好的程序中把数据加密解密然后传输存储。为了保证其安全,有时还会加入特殊印记。来确保发出者的信息没有被中途窃取。

本程序是在java环境中编写,新建一个“Windows窗体应用程序“,最终的实现结果以用户界面的形式呈现给用户。文件安全传输系统的用户界面中显示可以实现4个不同的功能,字符串加密、字符串解密、文件加密、文件解密。具体的代码如下(因代码过长只截取部分代码):

ToggleGroup operationGroup = new ToggleGroup();
encryptButton.setUserData("加密");
decryptButton.setUserData("解密");
encryptButton.setToggleGroup(operationGroup);
decryptButton.setToggleGroup(operationGroup);

ToggleGroup methodGroup = new ToggleGroup();
RSAButton.setUserData("RSA");
AESButton.setUserData("AES");
RSAButton.setToggleGroup(methodGroup);
AESButton.setToggleGroup(methodGroup);

ToggleGroup keyGroup = new ToggleGroup();
manualKeyButton.setUserData("手动输入密钥");
autoKeyButton.setUserData("自动生成密钥");
manualKeyButton.setToggleGroup(keyGroup);
autoKeyButton.setToggleGroup(keyGroup);

ToggleGroup plainTextGroup = new ToggleGroup();
plainTextButton.setUserData("手动输入明文");
fileButton.setUserData("选择文件");
plainTextButton.setToggleGroup(plainTextGroup);
fileButton.setToggleGroup(plainTextGroup);

本系统实现RSA加密算法的部分代码。RSA是一个非对称加密,但是加解密过程中存在长度限制,需要分段加解密,同时在加解密的过程中存在效率问题。通过本系统的RSA算法进行加密对文件进行保存生成加密的文本文档。通过本系统的解密系统还可以把加密后的信息重新还原。

KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(KEY_ALGORITHM);
    keyPairGenerator.initialize(
            1024
    );
    KeyPair keyPair = keyPairGenerator.generateKeyPair();
    //公钥
    RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();
    //私钥
    RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();

// 保存
    FileOutputStream pbkFileOutputStream =
            new FileOutputStream(Paths.get(WORK_PATH, "public_key.txt").toString());
    pbkFileOutputStream.write(publicKey.getEncoded());
    pbkFileOutputStream.flush();
    pbkFileOutputStream.close();
    pbkFileOutputStream.close();
    FileOutputStream prkFileOutputStream =
            new FileOutputStream(Paths.get(WORK_PATH, "private_key.txt").toString());
    prkFileOutputStream.write(privateKey.getEncoded());
    prkFileOutputStream.flush();
    prkFileOutputStream.close();
    prkFileOutputStream.close();
} catch (IOException | NoSuchAlgorithmException e) {
    e.printStackTrace();

6.3加密算法的实现

public static byte[] encryptAES(Key key, byte[] data) {try {Cipher cipher = Cipher.getInstance("AES");cipher.init(Cipher.ENCRYPT_MODE, key);return cipher.doFinal(data);} catch (Exception e) {throw new RuntimeException(e);}}/*** AES 解密
** @param key* @param data* @return*/public static byte[] decryptAES(Key key, byte[] data) {try {// 解密
Cipher cipher = Cipher.getInstance("AES");cipher.init(Cipher.DECRYPT_MODE, key);return cipher.doFinal(data);} catch (Exception e) {e.printStackTrace();}return null;}public static void main(String[] args) {}

RSA,AES算法加解密相关推荐

  1. 程序猿成长之路番外篇之前后端加解密(rsa+aes混合加解密算法)

    今年国庆前夕接手一个外部项目,说是要保障接口数据安全,数据安全相对容易些,接口安全嘛emmmmm, 这个要考虑加解密算法.白名单之类的问题了.于是打算今天搞一期接口安全为题的成长之路番外篇. 为什么要 ...

  2. AES算法加解密及简单图像化界面实现

    RIJNDAEL 加密算法 注意:本文实现的AES算法的密钥,明文,密文均为128位,后续可能会添加192位或256位的密钥.函数flag参数默认是1,即加密,在解密调用时改为0即可. 先放个运行效果 ...

  3. java 和 c# 下的RSA证书+AES+DES加解密实现

    java 和 c# 下的RSA+AES+DES加解密实现 前言 在实际应用中,经常有需要使用加解密的情况,RSA\AES\DES是比较常用的几种加解密方式,使用和实现方式都比较成熟可靠,本文简要介绍一 ...

  4. RSA算法加解密的C语言实现

    RSA算法加解密的C语言实现 一. 实现的功能 二. 源代码 一. 实现的功能 用户输入明文 自动随机生成较大的数p和q,并对它们进行素性检测,检测成功之后,程序继续 计算Φ(n)的值,并求出它的所有 ...

  5. SM2国密算法加解密

    接口安全设计原则的一个点就是数据不能明文传输,除了https这个必须的请求外,接口数据加密也是一个重要的方式,下面介绍一下SM2国密算法加解密的使用方式. 这里我就针对目前前后端分离架构的方式来简单介 ...

  6. 国密SM2算法的只求理解不求甚解 (4/5)SM2算法加解密协议

    国密SM2算法的只求理解不求甚解 (1/5)前置数学知识:模运算 国密SM2算法的只求理解不求甚解 (2/5)前置数学知识:平面几何 国密SM2算法的只求理解不求甚解 (3/5)SM2算法数学模型 国 ...

  7. ElGamal算法加解密

    文章目录 ElGamal算法加解密 算法流程 代码实现 测试数据 运行结果 ElGamal算法加解密 算法流程 参数选取:素数p,生成元g,小于p的随机非负整数x 产生密钥:公钥: y = g ^ x ...

  8. AES和RSA前后端加解密

    先了解AES和RSA加密算法 AES算法 1.运算速度快,在有反馈模式.无反馈模式的软硬件中,Rijndael都表现出非常好的性能. 2.对内存的需求非常低,适合于受限环境. 3.Rijndael 是 ...

  9. php aes 256 加解密,PHP完整的AES加解密算法使用及例子(256位)

    依赖PHP自身的mcrypt扩展 class aes { // CRYPTO_CIPHER_BLOCK_SIZE 32 private $_secret_key = 'default_secret_k ...

最新文章

  1. 【C++】C++好书推荐
  2. VScode 无法创建文件或者无法保存文件
  3. android网页无法定位吗,在android中,js 无法定位 html页面的某元素
  4. Mysql可视化工具Navicat中文版下载和报错解决
  5. Consul入门03 - 注册服务
  6. 【NLP】TransformerXL:因为XL,所以更牛
  7. python 命名空间冲突_python-命名空间
  8. 猜数字(HDU-2178)
  9. 夏侯南溪搭建目标检测模型——数据读取篇
  10. swift开发网络篇 - 用户登录POST JSON and header
  11. zerorpc java_Zerorpc 支持暴露多个远程Api接口类
  12. 如果你感到ETF内卷了,聪明的你要换条路
  13. 从0开始Windows Mobile 开发
  14. 数学归纳法·Fibonacci数列
  15. 单商户商城系统功能讲解02管理后台端—首页
  16. 有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何?
  17. 仓库货架通道宽度的设计要求和注意事项
  18. 阿里云cdn设置不缓存
  19. docker适合初学者吗_简化了Docker:面向绝对初学者的动手指南
  20. 计算机用户组怎么更改权限,win7系统用户组权限怎么设置

热门文章

  1. c++ vs2015 播放音乐_苹果音乐全家桶有哪些 苹果音乐全家桶介绍_智能常识
  2. 华为android密码是什么格式的,华为手机怎么给相册设置独立的密码?
  3. Android批量添加删除联系人
  4. Transformer(李宏毅老师Transforme PPT截图)
  5. python3的pprint_Python3标准库:pprint美观打印数据结构
  6. 流程图和思维导图工具
  7. java trimleft函数_常用函数-Java架构师必看
  8. 【阅读摘要】风冷及风道设计
  9. Markdown插入图片 详细例子(本地图片,网络图片,base64) Windows
  10. 微信分享朋友,朋友圈,qq