精华内容
下载资源
问答
  • 常用的数据加密协议有哪些
    千次阅读
    2021-07-02 16:46:54

    数据常用加密方式

    在日常设计及开发中,为确保数据传输和数据存储的安全,可通过特定的算法,将数据明文加密成复杂的密文。目前主流加密手段大致可分为单向加密和双向加密。

    单向加密:通过对数据进行摘要计算生成密文,密文不可逆推还原。算法代表:Base64,MD5,SHA;

    双向加密:与单向加密相反,可以把密文逆推还原成明文,双向加密又分为对称加密和非对称加密。

    对称加密:指数据使用者必须拥有相同的密钥才可以进行加密解密,就像彼此约定的一串暗号。算法代表:DES,3DES,AES,IDEA,RC4,RC5;

    非对称加密:相对对称加密而言,无需拥有同一组密钥,非对称加密是一种“信息公开的密钥交换协议”。非对称加密需要公开密钥和私有密钥两组密钥,公开密钥和私有密钥是配对起来的,也就是说使用公开密钥进行数据加密,只有对应的私有密钥才能解密。这两个密钥是数学相关,用某用户密钥加密后的密文,只能使用该用户的加密密钥才能解密。如果知道了其中一个,并不能计算出另外一个。因此如果公开了一对密钥中的一个,并不会危害到另外一个密钥性质。这里把公开的密钥为公钥,不公开的密钥为私钥。算法代表:RSA,DSA。

    更多相关内容
  • 网络通信时总会在网络协议中留下痕迹,基于网络数据协议分类是协议分析中格式推断和语义分析的基础,那数据传输协议有哪些?下面贤集网小编为大家分享五种常用网络协议。1、网络协议分类的方法当前,在开放式...

    计算机网络在人们的日常生活和工作中的作用越来越大,与此同时网络的安全性也受到了冲击。网络通信时总会在网络协议中留下痕迹,基于网络数据的协议分类是协议分析中格式推断和语义分析的基础,那数据传输协议都有哪些?下面贤集网小编为大家分享五种常用网络协议。

    1、网络协议分类的方法

    当前,在开放式网络协议中,主要分成两种类型:网际标准化组织的开发系统互联协议ISO/OSI,网际互联网所使用的TCP/IP。前者属于一种十分规范的协议,该协议是专家学者们制定出来的,但是这种协议并没有被实际网络使用,而TCP/IP主要是从实验室然后到世界性的互联网,这一协议在实践中得到逐渐完善。

    网络协议分类的方法从研究手段分可划为两类,即指令代码分析(基于指令代码的协议識别)和报文序列分析(基于网络数据的协议识别)。报文序列分析相比于指令代码分析通用性更强,它不关心报文所在协议层次,并且对终端依赖较小。在协议种类复杂的情况下,如果数据量足够大,它的分析速度优于指令代码分析方式。但是对于加密协议,由于已经破坏了其统计规律,通过报文序列分析的方式很难得到理想结果,而且这种方法对样本的要求较高,如果样本中某类格式的协议比较少,该类协议就容易被忽略。

    根据研究对象的不同,报文序列分析可分为四类:未加密已知协议分类、加密已知协议分类、未加密未知协议分类、加密未知协议分类。传统的协议分类方法大都以统计规律为基础,通过查找高频的特征,采用不同的算法来进行分类,包括基于端口的分类、基于特征字段的分类、基于流量特征的分类等。其他方法有基于隐马尔可夫模型、基于正则表达式的分类等,这些方法多通过提高查找频繁特征的准确性来提高分类的精度。

    数据传输协议都有哪些?

    常见的网络协议有TCP/IP协议、IPX/SPX协议、NetBEUI协议、Microsoft网络的文件和打印机共享。在局域网中用得的比较多的是IPX/SPX。用户如果访问Internet,则必须在网络协议中添加TCP/IP协议。具体介绍如下:

    2426da51257a00542937ddb8425588ef.jpg

    TCP/IP协议

    TCP/IP协议是协议中的老大,用得最多,只有TCP/IP协议允许与internet进行完全连接。现今流行的网络软件和游戏大都支持TCP/IP协议。

    IPX/SPX协议

    IPX/SPX协议是Novell开发的专用于NetWare网络的协议,现在已经不光用于NetWare网络,大部分可以联机的游戏都支持IPX/SPX协议,例如星际、cs。虽然这些游戏都支持TCP/IP协议,但通过IPX/SPX协议更省事,不需要任何设置。IPX/SPX协议在局域网中的用途不大。它和TCP/IP协议的一个显著不同是它不使用ip地址,而是使用mac地址。

    NetBEUI协议

    NetBEUI协议是有IBM开发的非路由协议,实际上是NetBIOS增强用户接口,是Windows 98前的操作系统的缺省协议,特别适用于在“网上邻居”传送数据,大大提高了在“网上邻居”查找电脑的速度。如果一台只装了TCP/IP协议的Windows 98电脑想加入到WINNT域,也必须安装NetBEUI协议。

    二进制数据协议

    原理:直接将内存里的对象保存为二进制数据,然后通过封包(size+(二进制数据))的方式发送出去,解包的时候,读取size,然后读取二进制数据,再根据二进制的结构体描述文件来解开这个包,获取每个数据成员的数据。

    json数据协议

    json数据协议,为了改变二进制的不足,改变二进制的封包与解包需要以来于每个协议的对象,使用跨语言的数据交换格式json与xml相比,体积会比xml小,可读性比二进制好,跨语言的封包和解包,每个语言只需要实现json的解码编码即可。

    五种常用网络协议

    1、Telnet(Remote Login):提供远程登录功能,一台计算机用户可以登录到远程的另一台计算机上,如同在远程主机上直接操作一样。

    2、FTP(File Transfer Protocol):远程文件传输协议,允许用户将远程主机上的文件拷贝到自己的计算机上。

    3、SMTP(Simple Mail transfer Protocol):简单邮政传输协议,用于传输电子邮件。

    4、NFS(Network File Server):网络文件服务器,可使多台计算机透明地访问彼此的目录。

    5、UDP(User Datagram Protocol):用户数据包协议,它和TCP一样位于传输层,和IP协议配合使用,在传输数据时省去包头,但它不能提供数据包的重传,所以适合传输较短的文件。

    以上就是关于数据传输协议都有哪些?五种常用网络协议的知识介绍,早期主要采用基于端口的协议识别方法对未加密的已知协议进行分析。随着计算机的普遍应用和各种应用程序的出现,新出现的协议开始采用动态端口来进行通信和数据传输,或者采用端口复用技术,这就使得端口识别技术应用越来越受限。

    注:文章内的所有配图皆为网络转载图片,侵权即删!

    展开全文
  • DES:数据加密标准,速度较快,适用于加密大量数据的场合。 3DES:是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。 AES:高级加密标准,是下一代的加密算法标准,速度快,安全级别高。 常见的非...

    常用加密算法有两类:对称加密算法和非对称加密算法(公开密钥加密)。对称加密算法用来对敏感数据等信息进行加密,常用的算法包括:

    DES:数据加密标准,速度较快,适用于加密大量数据的场合。

    3DES:是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。

    AES:高级加密标准,是下一代的加密算法标准,速度快,安全级别高。

    常见的非对称加密算法如下:

    RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的。

    ECC:椭圆曲线密码编码学。

    对称密钥密码体制的原理和特点

    对称密钥密码体制,对于大多数算法,解密算法是加密算法的逆运算,加密密钥和解密密钥相同,同属一类的加密体制。它保密强度高但开放性差,要求发送者和接收者在安全通信之前,需要有可靠的密钥信道传递密钥,而此密钥也必须妥善保管。

    DES算法

    算法思想

    DES是对称密码算法,是美国数据加密标准,对称加密就是加密秘钥和解密秘钥相同的加密算法,DES算法的基本思想是对明文进行分组,然后利用用户秘钥对明文分组进行16轮的移位和循环移位、置换、扩展、压缩、异或等位运算,利用复杂运算把明文编码彻底打乱,从而使得加密后的密文无法破解。 

    DES加密算法优点是密钥较短,加密处理简单,加解密速度快,适用于加密大量数据的场合。缺点对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都能对消息进行加密解密,因此秘钥的管理与分发存在缺陷。

    加解密过程

    DES算法是一个分组加密算法,它以64位分组对数据进行加密,其初始密钥也是64位,它的加密过程可以描述如下:

    ①64位密钥经子密钥产生算法产生出16个子密钥:K1,K2,…K16,分别供第一次,第二次, …,第十六次加密迭代使用。

    ②64位明文经初始置换IP,将数据打乱重排并分成左右两半。左边为L0,右边为R0: X=L0R0=IP(x)。

    ③16轮轮变换,每轮(第i轮)操作如下:在轮子密钥Ki的控制下,由轮函数f对当前轮输入数据的右半部分Ri-1进行加密:第一步,将Ri-1经过E盒置换扩展成48位,第二步,将Ri-1与48位的轮子密钥Ki逐比特异或,第三步,对Ri-1进行S盒压缩代换,将其压缩为32位,第四步,对Ri-1进行P盒置换。然后,将Ri-1与当前轮输入的左半部分Li-1进行逐比特异或,将该运算结果作为当前轮(第i轮)右半部份的输出Ri=Li-1⊕f(Ri-1,Ki);将本轮输入的右半部分数据作为本轮输出的左半部分数据:Li=Ri-1。

    ④16轮变换结束后,交换输出数据的左右两部分:X=R16L16。

    ⑤经过逆初始变换IP-1输出密文。对于DES算法来说,其解密过程与加密过程是同一过程,只不过使用子密钥的顺序相反。

    RSA算法

    算法思想

    RSA算法安全性基于大数分解的难度。将两个大素数相乘容易,但要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。从一个公开密钥和密文中恢复出明文的难度等价于分解两个大素数的乘积。为提高保密强度,RSA密钥至少为500位长,一般推荐使用1024位,目前商用RSA算法密钥长度2048位。

    RSA算法的安全性要优于对称加密算法,但因算法复杂度较高,其加密处理效率不如对称加密算法。故在网络传输重要信息时,常将两种加密算法混合使用。

    例:

    RSA算法中,选择p=7,q=17,e=13,计算其公钥与私钥,并采用快速模乘(反复平方乘)方法,加密明文m=

    解:①密钥的生成:

    模数n=p×q=7×17=119,f(n)=(p-1)×(q-1)=6×16=96

    因为加密指数e和私密钥d满足:ed mod f(n) =1,所以d=e-1mod f(n) ,私钥d的计算过程如下

    Q

    A1

    A2

    A3

    B1

    B2

    B3

    ——

    1

                  0

    96

    0

    1

    13

    7

    0

    1

    13

    1

    -7

    5

    2

    1

    -7

    5

    -2

    15

    3

    1

    -2

    15

    3

    3

    -22

    2

    1

    3

    -22

    2

    -5

    37

    1

    由以上计算可知私密钥d=37。

    公钥为(e,n)=(13,119),私钥为的d=37

    ②使用以上密钥对,采用反复平方乘方法加密明文m=1910,计算过程如下:

    采用RSA算法加密明文,密文c=me  mod n=1913 mod 119

    将加密指数e=13用二进制表示:(11012,则有

    k

    bi

    d

    3

    1

    ((12   mod 119) ×19)mod119  = 19

    2

    1

    ((192   mod 119) ×19)   mod 119 = 76

    1

    0

                             (76)2 mod 119   = 64

    0

    1

    ((64)2   mod 119) ×19)   mod 119 = 117

    由以上计算可知,密文为(117)10

    换位密码

    换位密码(列换位)加密技术是将明文按固定长m(秘钥长度)分组,即每行m个字母,在密钥控制下排列成矩阵,最后根据秘钥的字典序按列优先的顺序依次读出,即为密文。

    例:

    1.试利用换位加密技术将明文“i will go back by train tomorrow”用密钥“cable”加密,写出密文,字符之间不用空格。

    2.这种加密方式有什么缺陷。

    解:

    1. 密文:wobioibynrigkamwlcroolattr  
    2. 缺陷:加密算法简单,易于破解;算法的安全性在于密钥的安全性,一旦密钥丢失,算法再没有价值。

     替换密码

    替换密码定义:A和B是有 n 个字母的字母表,定义一个由A到B的映射:f:A→B

    f(ai )= bi=aj

    j=i+k mod n

    即用明文字母在字母表中后面第 k 个字母来代替。

    例:

    当 K=3 时是著名的凯撒密码,恺撒密码是古罗马恺撒大帝在营救西塞罗战役时用来保护重要军情的加密系统(《高卢战记》),凯撒密码是历史上第一个密码技术。

    1.请将短语“if you do not leave me i will by your side until the life end”使用凯撒密码加密,写出密文,字符之间不留空格。

    2.你能再对其进行简单改进吗?写出你的算法和密文。

    解:

    1. 加密后的密文:librxgrqrwohdyhphlzlooebbrxuvlghxqwlowkholihhqg 
    2. 简单改进:使密文倒序,转变为新的密文:gqhhilohkwolwqxhglvuxrbbeoolzlhphydhowrqrgxrbil
    展开全文
  • 常用数据加密和解密方法

    万次阅读 2018-07-17 13:54:07
    ASP.NET(C#)常用数据加密和解密方法汇总  一、数据加密的概念 1、 基本概念 2、 基本功能 3、 加密形式  二、 数据加密的项目应用和学习 1、 媒体加密:DRM 2、 文件加密:文本加密、pdf、word 3、 ...

    http://www.cnblogs.com/sunxuchu/p/5484018.html

    关键词:数据加密用哪种方式更好?

    ASP.NET(C#)常用数据加密和解密方法汇总 

    一、数据加密的概念

    1、  基本概念

    2、  基本功能

    3、  加密形式 

    二、 数据加密的项目应用和学习

    1、  媒体加密:DRM

    2、  文件加密:文本加密、pdf、word

    3、  数据加密:ASP.NET(C#)中的数据加密

    4、  硬件加密:加密狗

    三、 数据加密的发展趋势 

    四、 网络数据加密算法分类

    1、  根本不考虑解密问题:MD5、

    2、  私用密钥加密:DES、AES

    3、  公用密钥加密:RSA

    4、  数字证书: 

    五、对称加密之DES加密和解密的讲解 

    六、 非对称加密之RSA加密和解密的讲解 

    七、 ASP.NET(C#) 常用加密类实例调用讲解

    ASP.NET(C#)常用数据加密和解密方法汇总 

      

    数据加密技术是网络中最基本的安全技术,主要是通过对网络中传输的信息进行数据加密来保障其安全性,这是一种主动安全防御策略,用很小的代价即可为信息提供相当大的安全保护。

    一、加密的基本概念 

    "加密",是一种限制对网络上传输数据的访问权的技术。原始数据(也称为明文,plaintext)被加密设备(硬件或软件)和密钥加密而产生的经过编码的数据称为密文(ciphertext)。将密文还原为原始明文的过程称为解密,它是加密的反向处理,但解密者必须利用相同类型的加密设备和密钥对密文进行解密。

    加密的基本功能包括:

    1. 防止不速之客查看机密的数据文件;

    2. 防止机密数据被泄露或篡改;

    3. 防止特权用户(如系统管理员)查看私人数据文件;

    4. 使入侵者不能轻易地查找一个系统的文件。

    数据加密是确保计算机网络安全的一种重要机制,虽然由于成本、技术和管理上的复杂性等原因,目前尚未在网络中普及,但数据加密的确是实现分布式系统和网络环境下数据安全的重要手段之一。

    数据加密可在网络OSI七层协议(OSIOpen System Interconnect的缩写,意为开放式系统互联。国际标准组织(国际标准化组织)制定了OSI模型。这个模型把网络通信的工作分为7层,分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。)的多层上实现、所以从加密技术应用的逻辑位置看,有三种方式:

    链路加密:通常把网络层以下的加密叫链路加密,主要用于保护通信节点间传输的数据,加解密由置于线路上的密码设备实现。根据传递的数据的同步方式又可分为同步通信加密和异步通信加密两种,同步通信加密又包含字节同步通信加密和位同步通信加密。

    节点加密:是对链路加密的改进。在协议传输层上进行加密,主要是对源节点和目标节点之间传输数据进行加密保护,与链路加密类似.只是加密算法要结合在依附于节点的加密模件中,克服了链路加密在节点处易遭非法存取的缺点。

    端对端加密:网络层以上的加密称为端对端加密。是面向网络层主体。对应用层的数据信息进行加密,易于用软件实现,且成本低,但密钥管理问题困难,主要适合大型网络系统中信息在多个发方和收方之间传输的情况。

    二、数据加密的应用 

    1、  媒体加密:DRM

    2、  文件加密:文本加密、pdf、word

    3、  数据加密:ASP.NET(C#)中的数据加密

    4、  硬件加密:加密狗

     

    三.加密技术发展趋势 

    私用密钥加密技术与公开密钥加密技术相结合:鉴于两种密码体制加密的特点,在实际应用中可以采用折衷方案,即结合使用DES/IDEA和RSA,以DES为"内核",RSA为"外壳",对于网络中传输的数据可用DES或IDEA加密,而加密用的密钥则用RSA加密传送,此种方法既保证了数据安全又提高了加密和解密的速度,这也是目前加密技术发展的新方向之一。

    寻求新算法:跳出以常见的迭代为基础的构造思路,脱离基于某些数学问题复杂性的构造方法。如刘尊全先生提出的刘氏算法,是一种基于密钥的公开密钥体制,它采用了随机性原理构造加解密变换,并将其全部运算控制隐匿于密钥中,密钥长度可变。它是采用选取一定长度的分割来构造大的搜索空间,从而实现一次非线性变换。此种加密算法加密强度高、速度快、计算开销低。

    加密最终将被集成到系统和网络中,例如IPV6协议就已有了内置加密的支持,在硬件方面,Intel公司正研制一种加密协处理器。它可以集成到微机的主极上。

    四、加密技术的分类 

    加密类型可以简单地分为四种:

    1. 根本不考虑解密问题; 

    2. 私用密钥加密技术:对称式加密(Symmetric Key Encryption):对称式加密方式对加密和解密使用相同的密钥。通常,这种加密方式在应用中难以实施,因为用同一种安全方式共享密钥很难。如:RC4、RC2、DES 和 AES 系列加密算法。

    3. 公开密钥加密技术:非对称密钥加密(Asymmetric Key Encryption):非对称密钥加密使用一组公共/私人密钥系统,加密时使用一种密钥,解密时使用另一种密钥。公共密钥可以广泛的共享和透露。当需要用加密方式向服务器外部传送数据时,这种加密方式更方便。如: RSA

    4. 数字证书。(Certificate):数字证书是一种非对称密钥加密,但是,一个组织可以使用证书并通过数字签名将一组公钥和私钥与其拥有者相关联。 

    五、对称加密之DES加密与解密 

    一、  对称加密 

    对称加密,是一种比较传统的加密方式,其加密运算、解密运算使用的是同样的密钥,信息的发送者和信息的接收者在进行信息的传输与处理时,必须共同持有该密码(称为对称密码)。因此,通信双方都必须获得这把钥匙,并保持钥匙的秘密。

    单钥密码系统的安全性依赖于以下两个因素:

    第一、加密算法必须是足够强的,仅仅基于密文本身去解密信息在实践上是不可能的。

    第二、加密方法的安全性依赖于密钥的秘密性,而不是算法的秘密性,因此,我们没有必要确保算法的秘密性(事实上,现实中使用的很多单钥密码系统的算法都是公开的),但是我们一定要保证密钥的秘密性。

    DES(Data Encryption Standard)和TripleDES是对称加密的两种实现。

    DES和TripleDES基本算法一致,只是TripleDES算法提供的key位数更多,加密可靠性更高。

    DES使用的密钥key为8字节,初始向量IV也是8字节。

    TripleDES使用24字节的key,初始向量IV也是8字节。

    两种算法都是以8字节为一个块进行加密,一个数据块一个数据块的加密,一个8字节的明文加密后的密文也是8字节。如果明文长度不为8字节的整数倍,添加值为0的字节凑满8字节整数倍。所以加密后的密文长度一定为8字节的整数倍。

    二、  加密解密过程 

     

    Figure 1. DES加密解密过程

    上图是整个DES和TripleDES算法的加密解密过程,下面以TripleDES为例,结合dotnet分析加密解密的各个步骤,并给出相关实现代码。

    1 生成keyIV

    System.Security.Cryptography. TripleDESCryptoServiceProvider类是dotnet中实现TripleDES算法的主要的类。

    TripleDESCryptoServiceProvider类只有一个构造方法TripleDESCryptoServiceProvider(),这个方法把一些属性初始化:

    KeySize(加密密钥长度,以位为单位)= 192(24字节)

    BlockSize(加密处理的数据块大小,以位为单位)= 64(8字节)

    FeedbackSize(加密数据块后返回的数据大小,以位为单位)= 64(8字节)

     

    TripleDESCryptoServiceProvider构造方法同时会初始化一组随机的key和IV。

    默认的TripleDESCryptoServiceProvider的key为24字节,IV为8字节,加密数据块为8字节。

    生成key和IV的代码很简单:

    TripleDESCryptoServiceProvider tDESalg = new TripleDESCryptoServiceProvider();
    byte[] keyArray = tDESalg.Key;
    byte[] IVArray = tDESalg.IV;

    生成的key和IV在加密过程和解密过程都要使用。

    2 字符串明文转成某一代码页对应的编码字节流 

    待加密的数据可能有两种形式,一种是二进制的数据,本身就是一组字节流,这样的数据可以跳过这一步,直接进入加密步骤。还有一种情况是字符串数据,字符串中同样的字符使用不同的代码页会生成不同的字节码,所以从字符串到字节流的转换是需要指定使用何种编码的。在解密之后,要从字节流转换到字符串就要使用相同的代码页解码,否则就会出现乱码。

    // 待加密的字符串

    string plainTextString = "Here is some data to encrypt. 这里是一些要加密的数据。";

    // 使用utf-8编码(也可以使用其它的编码)

    Encoding sEncoding = Encoding.GetEncoding("utf-8");

    // 把字符串明文转换成utf-8编码的字节流

    byte[] plainTextArray = sEncoding.GetBytes(plainTextString);

     

    3 加密操作 

    加密的原料是明文字节流,TripleDES算法对字节流进行加密,返回的是加密后的字节流。同时要给定加密使用的key和IV。

    // 把字符串明文转换成utf-8编码的字节流

    复制代码

    byte[] plainTextArray = sEncoding.GetBytes(plainTextString);
    public static byte[] EncryptString(byte[] plainTextArray, byte[] Key, byte[] IV)
    {
        // 建立一个MemoryStream,这里面存放加密后的数据流
        MemoryStream mStream = new MemoryStream();
        // 使用MemoryStream 和key、IV新建一个CryptoStream 对象
        CryptoStream cStream = new CryptoStream(mStream,
            new TripleDESCryptoServiceProvider().CreateEncryptor(Key, IV),
            CryptoStreamMode.Write);
        // 将加密后的字节流写入到MemoryStream
        cStream.Write(plainTextArray, 0, plainTextArray.Length);
        //把缓冲区中的最后状态更新到MemoryStream,并清除cStream的缓存区
        cStream.FlushFinalBlock();
        // 把解密后的数据流转成字节流
        byte[] ret = mStream.ToArray();
        // 关闭两个streams.
        cStream.Close();
        mStream.Close();
        return ret;
    }

    复制代码

    4 解密操作 

    解密操作解密上面步骤生成的密文byte[],需要使用到加密步骤使用的同一组Key和IV。

    // 调用解密方法,返回已解密数据的byte[]

    复制代码

    byte[] finalPlainTextArray = DecryptTextFromMemory(Data, keyArray, IVArray);
    public static byte[] DecryptTextFromMemory(byte[] EncryptedDataArray, byte[] Key, byte[] IV)
    {
        // 建立一个MemoryStream,这里面存放加密后的数据流
        MemoryStream msDecrypt = new MemoryStream(EncryptedDataArray);
        // 使用MemoryStream 和key、IV新建一个CryptoStream 对象
        CryptoStream csDecrypt = new CryptoStream(msDecrypt,
            new TripleDESCryptoServiceProvider().CreateDecryptor(Key, IV),
            CryptoStreamMode.Read);
        // 根据密文byte[]的长度(可能比加密前的明文长),新建一个存放解密后明文的byte[]
        byte[] DecryptDataArray = new byte[EncryptedDataArray.Length];
        // 把解密后的数据读入到DecryptDataArray
        csDecrypt.Read(DecryptDataArray, 0, DecryptDataArray.Length);
        msDecrypt.Close();
        csDecrypt.Close();
        return DecryptDataArray;
    }

    复制代码

    有一点需要注意,DES加密是以数据块为单位加密的,8个字节一个数据块,如果待加密明byte[]的长度不是8字节的整数倍,算法先用值为“0”的byte补足8个字节,然后进行加密。所以加密后的密文长度一定是8的整数倍。这样的密文解密后如果补了0值的byte,则解密后这些0值的byte依然存在。比如上例中要加密的明文是:

    “Here is some data to encrypt. 这里是一些要加密的数据。”

    转成明文byte[]后是66个字节,DES算法就会补上6个0值的byte,补到72个字节。这样加密后再解密回来的密文byte[]解码后的字符串就是这样的:

    "Here is some data to encrypt. 这里是一些要加密的数据。\0\0\0\0\0\0"

    5 从编码字节流转成字符串明文 

    // 使用前面定义的Encoding,utf-8的编码把byte[]转成字符串

    plainTextString = sEncoding.GetString(finalPlainTextArray);

    六、非对称加密之RSA加密和解密的讲解 

          RSA公钥加密算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的。RSA取名来自开发他们三者的名字。RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。

      RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价。即RSA的重大缺陷是无法从理论上把握它的保密性能如何,而且密码学界多数人士倾向于因子分解不是NPC问题。

      RSA的缺点主要有:

    A)产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。

    B)分组长度太大,为保证安全性,n 至少也要 600bits以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术的发展,这个

    长度还在增加,不利于数据格式的标准化。目前,SET(Secure Electronic Transaction)协议中要求CA采用2048bits长的密钥,其他实体使用1024比特的密钥。C)RSA密钥长度随着保密级别提高,增加很快。下表列出了对同一安全级别所对应的密钥长度。

     

    保密级别

    对称密钥长度(bit)

    RSA密钥长度(bit)

    ECC密钥长度(bit)

    保密年限

    80

    80

    1024

    160

    2010

    112

    112

    2048

    224

    2030

    128

    128

    3072

    256

    2040

    192

    192

    7680

    384

    2080

    256

    256

    15360

    512

    2120

     这种算法1978年就出现了,它是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman。早在1973年,英国国家通信总局的数学家Clifford Cocks就发现了类似的算法。但是他的发现被列为绝密,直到1998年才公诸于世。

      RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。

      RSA的算法涉及三个参数,n、e1、e2。

      其中,n是两个大质数p、q的积,n的二进制表示时所占用的位数,就是所谓的密钥长度。

      e1和e2是一对相关的值,e1可以任意取,但要求e1与(p-1)*(q-1)互质;再选择e2,要求(e2*e1)mod((p-1)*(q-1))=1。

      (n及e1),(n及e2)就是密钥对。

      RSA加解密的算法完全相同,设A为明文,B为密文,则:A=B^e1 mod n;B=A^e2 mod n;

      e1和e2可以互换使用,即:

      A=B^e2 mod n;B=A^e1 mod n;

     

    C#代码实现

    需引用using System.Security.Cryptography;

    复制代码

    /// <summary>
            /// RSA加密
            /// </summary>
            /// <param name="publickey"></param>
            /// <param name="content"></param>
            /// <returns></returns>
            public static string RSAEncrypt(string publickey, string content)
            {
                publickey = @"<RSAKeyValue><Modulus>5m9m14XH3oqLJ8bNGw9e4rGpXpcktv9MSkHSVFVMjHbfv+SJ5v0ubqQxa5YjLN4vc49z7SVju8s0X4gZ6AzZTn06jzWOgyPRV54Q4I0DCYadWW4Ze3e+BOtwgVU1Og3qHKn8vygoj40J6U85Z/PTJu3hN1m75Zr195ju7g9v4Hk=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>";
                RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
                byte[] cipherbytes;
                rsa.FromXmlString(publickey);
                cipherbytes = rsa.Encrypt(Encoding.UTF8.GetBytes(content), false);
    
                return Convert.ToBase64String(cipherbytes);
            }
    
            /// <summary>
            /// RSA解密
            /// </summary>
            /// <param name="privatekey"></param>
            /// <param name="content"></param>
            /// <returns></returns>
            public static string RSADecrypt(string privatekey, string content)
            {
                privatekey = @"<RSAKeyValue><Modulus>5m9m14XH3oqLJ8bNGw9e4rGpXpcktv9MSkHSVFVMjHbfv+SJ5v0ubqQxa5YjLN4vc49z7SVju8s0X4gZ6AzZTn06jzWOgyPRV54Q4I0DCYadWW4Ze3e+BOtwgVU1Og3qHKn8vygoj40J6U85Z/PTJu3hN1m75Zr195ju7g9v4Hk=</Modulus><Exponent>AQAB</Exponent><P>/hf2dnK7rNfl3lbqghWcpFdu778hUpIEBixCDL5WiBtpkZdpSw90aERmHJYaW2RGvGRi6zSftLh00KHsPcNUMw==</P><Q>6Cn/jOLrPapDTEp1Fkq+uz++1Do0eeX7HYqi9rY29CqShzCeI7LEYOoSwYuAJ3xA/DuCdQENPSoJ9KFbO4Wsow==</Q><DP>ga1rHIJro8e/yhxjrKYo/nqc5ICQGhrpMNlPkD9n3CjZVPOISkWF7FzUHEzDANeJfkZhcZa21z24aG3rKo5Qnw==</DP><DQ>MNGsCB8rYlMsRZ2ek2pyQwO7h/sZT8y5ilO9wu08Dwnot/7UMiOEQfDWstY3w5XQQHnvC9WFyCfP4h4QBissyw==</DQ><InverseQ>EG02S7SADhH1EVT9DD0Z62Y0uY7gIYvxX/uq+IzKSCwB8M2G7Qv9xgZQaQlLpCaeKbux3Y59hHM+KpamGL19Kg==</InverseQ><D>vmaYHEbPAgOJvaEXQl+t8DQKFT1fudEysTy31LTyXjGu6XiltXXHUuZaa2IPyHgBz0Nd7znwsW/S44iql0Fen1kzKioEL3svANui63O3o5xdDeExVM6zOf1wUUh/oldovPweChyoAdMtUzgvCbJk1sYDJf++Nr0FeNW1RB1XG30=</D></RSAKeyValue>";
                RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
                byte[] cipherbytes;
                rsa.FromXmlString(privatekey);
                cipherbytes = rsa.Decrypt(Convert.FromBase64String(content), false);
    
                return Encoding.UTF8.GetString(cipherbytes);
            }
    

    复制代码

    七、ASP.NET(C#)常用加密类调用的讲解

    1C#常用加密解密类库代码如下: 

    复制代码

    /// <summary>
          /// MD5 加密静态方法
          /// </summary>
          /// <param name="EncryptString">待加密的密文</param>
          /// <returns>returns</returns>
          public static string MD5Encrypt(string EncryptString)
          {
              if (string.IsNullOrEmpty(EncryptString)) { throw (new Exception("密文不得为空")); }
              MD5 m_ClassMD5 = new MD5CryptoServiceProvider();
              string m_strEncrypt = "";
              try
              {
                  m_strEncrypt = BitConverter.ToString(m_ClassMD5.ComputeHash(Encoding.Default.GetBytes(EncryptString))).Replace("-", "");
              }
             catch (ArgumentException ex) { throw ex; }
             catch (CryptographicException ex) { throw ex; }
             catch (Exception ex) { throw ex; }
              finally { m_ClassMD5.Clear(); }
              return m_strEncrypt;
          }
    
          /// <summary>
          /// DES 加密(数据加密标准,速度较快,适用于加密大量数据的场合)
          /// </summary>
          /// <param name="EncryptString">待加密的密文</param>
          /// <param name="EncryptKey">加密的密钥</param>
          /// <returns>returns</returns>
          public static string DESEncrypt(string EncryptString, string EncryptKey)
          {
              if (string.IsNullOrEmpty(EncryptString)) { throw (new Exception("密文不得为空")); }
              if (string.IsNullOrEmpty(EncryptKey)) { throw (new Exception("密钥不得为空")); }
              if (EncryptKey.Length != 8) { throw (new Exception("密钥必须为8位")); }
              byte[] m_btIV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
              string m_strEncrypt = "";
             DESCryptoServiceProvider m_DESProvider = new DESCryptoServiceProvider();
              try
              {
                  byte[] m_btEncryptString = Encoding.Default.GetBytes(EncryptString);
                  MemoryStream m_stream = new MemoryStream();
                  CryptoStream m_cstream = new CryptoStream(m_stream, m_DESProvider.CreateEncryptor(Encoding.Default.GetBytes(EncryptKey), m_btIV), CryptoStreamMode.Write);
                  m_cstream.Write(m_btEncryptString, 0, m_btEncryptString.Length);
                  m_cstream.FlushFinalBlock();
                  m_strEncrypt = Convert.ToBase64String(m_stream.ToArray());
                  m_stream.Close(); m_stream.Dispose();
                  m_cstream.Close(); m_cstream.Dispose();
              }
              catch (IOException ex) { throw ex; }
              catch (CryptographicException ex) { throw ex; }
              catch (ArgumentException ex) { throw ex; }
              catch (Exception ex) { throw ex; }
              finally { m_DESProvider.Clear(); }
              return m_strEncrypt;
          }
    
          /// <summary>
          /// DES 解密(数据加密标准,速度较快,适用于加密大量数据的场合)
          /// </summary>
          /// <param name="DecryptString">待解密的密文</param>
          /// <param name="DecryptKey">解密的密钥</param>
          /// <returns>returns</returns>
          public static string DESDecrypt(string DecryptString, string DecryptKey)
          {
             if (string.IsNullOrEmpty(DecryptString)) { throw (new Exception("密文不得为空")); }
              if (string.IsNullOrEmpty(DecryptKey)) { throw (new Exception("密钥不得为空")); }
              if (DecryptKey.Length != 8) { throw (new Exception("密钥必须为8位")); }
              byte[] m_btIV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
             string m_strDecrypt = "";
             DESCryptoServiceProvider m_DESProvider = new DESCryptoServiceProvider();
             try
            {
                 byte[] m_btDecryptString = Convert.FromBase64String(DecryptString);
                 MemoryStream m_stream = new MemoryStream();
                 CryptoStream m_cstream = new CryptoStream(m_stream, m_DESProvider.CreateDecryptor(Encoding.Default.GetBytes(DecryptKey), m_btIV), CryptoStreamMode.Write);
                 m_cstream.Write(m_btDecryptString, 0, m_btDecryptString.Length);
                 m_cstream.FlushFinalBlock();
                 m_strDecrypt = Encoding.Default.GetString(m_stream.ToArray());
                 m_stream.Close(); m_stream.Dispose();
                 m_cstream.Close(); m_cstream.Dispose();
             }
             catch (IOException ex) { throw ex; }
             catch (CryptographicException ex) { throw ex; }
             catch (ArgumentException ex) { throw ex; }
             catch (Exception ex) { throw ex; }
             finally { m_DESProvider.Clear(); }
             return m_strDecrypt;
         }
         /// <summary>
         /// RC2 加密(用变长密钥对大量数据进行加密)
         /// </summary>
         /// <param name="EncryptString">待加密密文</param>
         /// <param name="EncryptKey">加密密钥</param>
         /// <returns>returns</returns>
         public static string RC2Encrypt(string EncryptString, string EncryptKey)
         {
             if (string.IsNullOrEmpty(EncryptString)) { throw (new Exception("密文不得为空")); }
             if (string.IsNullOrEmpty(EncryptKey)) { throw (new Exception("密钥不得为空")); }
             if (EncryptKey.Length < 5 || EncryptKey.Length > 16) { throw (new Exception("密钥必须为5-16位")); }
             string m_strEncrypt = "";
             byte[] m_btIV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
             RC2CryptoServiceProvider m_RC2Provider = new RC2CryptoServiceProvider();
             try
            {
                 byte[] m_btEncryptString = Encoding.Default.GetBytes(EncryptString);
                 MemoryStream m_stream = new MemoryStream();
                 CryptoStream m_cstream = new CryptoStream(m_stream, m_RC2Provider.CreateEncryptor(Encoding.Default.GetBytes(EncryptKey), m_btIV), CryptoStreamMode.Write);
                 m_cstream.Write(m_btEncryptString, 0, m_btEncryptString.Length);
                 m_cstream.FlushFinalBlock();
                 m_strEncrypt = Convert.ToBase64String(m_stream.ToArray());
                 m_stream.Close(); m_stream.Dispose();
                m_cstream.Close(); m_cstream.Dispose();
             }
             catch (IOException ex) { throw ex; }
             catch (CryptographicException ex) { throw ex; }
             catch (ArgumentException ex) { throw ex; }
             catch (Exception ex) { throw ex; }
             finally { m_RC2Provider.Clear(); }
             return m_strEncrypt;
         }
    
         /// <summary>
         /// RC2 解密(用变长密钥对大量数据进行加密)
         /// </summary>
         /// <param name="DecryptString">待解密密文</param>
         /// <param name="DecryptKey">解密密钥</param>
         /// <returns>returns</returns>
         public static string RC2Decrypt(string DecryptString, string DecryptKey)
         {
             if (string.IsNullOrEmpty(DecryptString)) { throw (new Exception("密文不得为空")); }
             if (string.IsNullOrEmpty(DecryptKey)) { throw (new Exception("密钥不得为空")); }
            if (DecryptKey.Length < 5 || DecryptKey.Length > 16) { throw (new Exception("密钥必须为5-16位")); }
             byte[] m_btIV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
             string m_strDecrypt = "";
             RC2CryptoServiceProvider m_RC2Provider = new RC2CryptoServiceProvider();
            try
            {
                byte[] m_btDecryptString = Convert.FromBase64String(DecryptString);
                 MemoryStream m_stream = new MemoryStream();
                 CryptoStream m_cstream = new CryptoStream(m_stream, m_RC2Provider.CreateDecryptor(Encoding.Default.GetBytes(DecryptKey), m_btIV), CryptoStreamMode.Write);
                 m_cstream.Write(m_btDecryptString, 0, m_btDecryptString.Length);
                 m_cstream.FlushFinalBlock();
                 m_strDecrypt = Encoding.Default.GetString(m_stream.ToArray());
                 m_stream.Close(); m_stream.Dispose();
                 m_cstream.Close(); m_cstream.Dispose();
             }
             catch (IOException ex) { throw ex; }
            catch (CryptographicException ex) { throw ex; }
             catch (ArgumentException ex) { throw ex; }
             catch (Exception ex) { throw ex; }
            finally { m_RC2Provider.Clear(); }
             return m_strDecrypt;
         }
    
         /// <summary>
         /// 3DES 加密(基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高)
         /// </summary>
         /// <param name="EncryptString">待加密密文</param>
         /// <param name="EncryptKey1">密钥一</param>
         /// <param name="EncryptKey2">密钥二</param>
        /// <param name="EncryptKey3">密钥三</param>
         /// <returns>returns</returns>
         public static string DES3Encrypt(string EncryptString, string EncryptKey1, string EncryptKey2, string EncryptKey3)
         {
             string m_strEncrypt = "";
             try
             {
                 m_strEncrypt = DESEncrypt(EncryptString, EncryptKey3);
                 m_strEncrypt = DESEncrypt(m_strEncrypt, EncryptKey2);
                m_strEncrypt = DESEncrypt(m_strEncrypt, EncryptKey1);
             }
             catch (Exception ex) { throw ex; }
             return m_strEncrypt;
         }
    
         /// <summary>
         /// 3DES 解密(基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高)
         /// </summary>
         /// <param name="DecryptString">待解密密文</param>
         /// <param name="DecryptKey1">密钥一</param>
         /// <param name="DecryptKey2">密钥二</param>
         /// <param name="DecryptKey3">密钥三</param>
         /// <returns>returns</returns>
         public static string DES3Decrypt(string DecryptString, string DecryptKey1, string DecryptKey2, string DecryptKey3)
         {
             string m_strDecrypt = "";
             try
             {
                m_strDecrypt = DESDecrypt(DecryptString, DecryptKey1);
                 m_strDecrypt = DESDecrypt(m_strDecrypt, DecryptKey2);
                 m_strDecrypt = DESDecrypt(m_strDecrypt, DecryptKey3);
             }
             catch (Exception ex) { throw ex; }
             return m_strDecrypt;
         }
    
         /// <summary>
         /// AES 加密(高级加密标准,是下一代的加密算法标准,速度快,安全级别高,目前 AES 标准的一个实现是 Rijndael 算法)
         /// </summary>
         /// <param name="EncryptString">待加密密文</param>
         /// <param name="EncryptKey">加密密钥</param>
        /// <returns></returns>
        public static string AESEncrypt(string EncryptString, string EncryptKey)
         {
            if (string.IsNullOrEmpty(EncryptString)) { throw (new Exception("密文不得为空")); }
             if (string.IsNullOrEmpty(EncryptKey)) { throw (new Exception("密钥不得为空")); }
             string m_strEncrypt = "";
             byte[] m_btIV = Convert.FromBase64String("Rkb4jvUy/ye7Cd7k89QQgQ==");
             Rijndael m_AESProvider = Rijndael.Create();
             try
             {
                 byte[] m_btEncryptString = Encoding.Default.GetBytes(EncryptString);
                 MemoryStream m_stream = new MemoryStream();
                 CryptoStream m_csstream = new CryptoStream(m_stream, m_AESProvider.CreateEncryptor(Encoding.Default.GetBytes(EncryptKey), m_btIV), CryptoStreamMode.Write);
                 m_csstream.Write(m_btEncryptString, 0, m_btEncryptString.Length); m_csstream.FlushFinalBlock();
                 m_strEncrypt = Convert.ToBase64String(m_stream.ToArray());
                 m_stream.Close(); m_stream.Dispose();
                 m_csstream.Close(); m_csstream.Dispose();
             }
             catch (IOException ex) { throw ex; }
             catch (CryptographicException ex) { throw ex; }
             catch (ArgumentException ex) { throw ex; }
             catch (Exception ex) { throw ex; }
             finally { m_AESProvider.Clear(); }
             return m_strEncrypt;
         }
    
         /// <summary>
         /// AES 解密(高级加密标准,是下一代的加密算法标准,速度快,安全级别高,目前 AES 标准的一个实现是 Rijndael 算法)
         /// </summary>
         /// <param name="DecryptString">待解密密文</param>
         /// <param name="DecryptKey">解密密钥</param>
         /// <returns></returns>
         public static string AESDecrypt(string DecryptString, string DecryptKey)
         {
             if (string.IsNullOrEmpty(DecryptString)) { throw (new Exception("密文不得为空")); }
             if (string.IsNullOrEmpty(DecryptKey)) { throw (new Exception("密钥不得为空")); }
             string m_strDecrypt = "";
             byte[] m_btIV = Convert.FromBase64String("Rkb4jvUy/ye7Cd7k89QQgQ==");
             Rijndael m_AESProvider = Rijndael.Create();
             try
             {
                 byte[] m_btDecryptString = Convert.FromBase64String(DecryptString);
                 MemoryStream m_stream = new MemoryStream();
                 CryptoStream m_csstream = new CryptoStream(m_stream, m_AESProvider.CreateDecryptor(Encoding.Default.GetBytes(DecryptKey), m_btIV), CryptoStreamMode.Write);
                 m_csstream.Write(m_btDecryptString, 0, m_btDecryptString.Length); m_csstream.FlushFinalBlock();
                 m_strDecrypt = Encoding.Default.GetString(m_stream.ToArray());
                 m_stream.Close(); m_stream.Dispose();
                 m_csstream.Close(); m_csstream.Dispose();
             }
             catch (IOException ex) { throw ex; }
             catch (CryptographicException ex) { throw ex; }
             catch (ArgumentException ex) { throw ex; }
             catch (Exception ex) { throw ex; }
             finally { m_AESProvider.Clear(); }
             return m_strDecrypt;
         }

    复制代码

    2、数据加密和解密简单代码调用如下: 

    Response.Write("<br>-----------MD5加密---------------<br>");        

    Response.Write(SDKSecurity.MD5Encrypt("仰天一笑"));
    Response.Write("<br>-----------DES加密---------------<br>");        

    Response.Write(SDKSecurity.DESEncrypt("仰天一笑", "anson-xu"));        

    Response.Write("<br>-----------DES解密---------------<br>");        

    Response.Write(SDKSecurity.DESDecrypt("l06JvJ45r/lb9iKzSXl47Q==", "anson-xu"));
    Response.Write("<br>-----------AES加密---------------<br>");    

    Response.Write(SDKSecurity.AESEncrypt("仰天一笑", "ansonxuyu"));        

    Response.Write("<br>-----------AES解密---------------<br>");        

    Response.Write(SDKSecurity.AESDecrypt("avwKL+MO8+zoLHvzk0+TBA==", "ansonxuyu"));

    3、数据加密和解密调用后运行效果图如下: 

    为系统而生,为框架而死,为debug奋斗一辈子; 吃符号的亏,上大小写的当,最后死在需求上。

    展开全文
  • 数据加密 加密原理: 把一帧需要发送的数据按位加上密码的每个字节,并且对密码字节做循环,然后保存回这一帧的数据包里面 示意图 代码实现 /****************************************************** * Function ...
  • PostgreSQL 数据安全之数据加密

    千次阅读 2021-09-01 10:23:17
    PostgreSQL 支持多个不同级别的灵活加密技术,包括密码加密、字段加密、存储加密、传输加密、认证加密以及应用加密,可以保护数据不因数据库服务器被盗、内部管理员或者不安全的网络传输而导致泄露。
  • HTTPS加密协议你知道多少?

    千次阅读 2022-04-11 19:30:30
    一、前言 本文我们来聊一聊计算机网络HTTP协议这个话题,在当今互联网时代,凡是涉及到‘上网’两字,就离不开数据...数据加密的由来 远在战争期间,没有通信网络的时期,将军要将作战计划和军令下发到各个营队中,就需
  • 加密算法有哪些

    千次阅读 2021-04-20 12:10:25
    一、对称加密算法 1、DES 已破解,不再安全,基本没有企业在用了。...最常用的对称加密算法。 密钥建立时间短、灵敏性好、内存需求低(不管怎样,反正就是好)。 实际使用中,使用工作模式为 CTR(最好用 BC 去
  • 常见的加密算法以及加密协议

    万次阅读 2018-09-20 10:14:11
    PKI:Public Key Infraastructure CA:Certificate Authority 公钥加密算法: DES:Data Encrption Standard;...加解密协议,是应用层,协议,通过在应用层协议和传输层之间建立SSL层,数据在SSL层完成加密,...
  • 区块链常用加密算法

    千次阅读 2021-11-24 16:21:44
    这个公钥和私钥必须是一对的,如果用公钥对数据进行加密,那么只有使用对应的私钥才能解密,所以只要私钥不泄露,那么我们的数据就是安全的。 常用加密算法: 对称加密:DES、3DES、TDEA、Blo...
  • ssl证书加密方式有哪些

    千次阅读 多人点赞 2021-08-26 10:58:04
    SSL证书是HTTP明文协议书升级HTTPS加密协议必需的ca证书。ssl证书主要是通过https加密方式实现网站及用户的安全性。那么,你可知道ssl证书加密方式有哪些?一起来看看。 ssl证书加密方式有哪些 ssl证书加密方式1...
  • 数据加密技术是网络中最基本的安全技术,主要是通过对网络中传输的信息进行数据加密来保障其安全性,这是一种主动安全防御策略,用很小的代价即可为信息提供相当大的安全保护。 一、加密的基本概念  "加密",是...
  • 数据传输过程加密方案

    万次阅读 2019-08-19 19:29:58
    文章目录前言数据加密方案数据加密细节AES加解密RSA公钥加密总结 前言 从前一篇网络安全基础要点知识介绍中可以知道,在网络通信中,...首先,客户端与服务端商量好数据加密协议,对传输数据做到安全保护。 安全保护...
  • 加密技术主要有哪些类型

    千次阅读 2021-07-28 05:23:49
    加密技术,是电子商务采取的主要安全保密措施,是最常用的安全保密手段,利用技术手段把重要的数据变为乱码(加密)传送,到达目的地后再用相同或不同的手段还原(解密)。包括两个元素:算法和密钥。对称加密采用了对称...
  • 它们之间最大的区 别在于分组加密模式每次对一组数据进行加密运算处理,而序列加密模式则逐位对数据进 行加密运算处理。事实上,在实际设计应用的算法中,并没有那么严格的区别,它们可能是相互结合的。比如输出...
  • 常用加密算法

    千次阅读 2021-12-01 11:02:33
    常用的对称加密算法 算法 密钥长度 工作模式 填充模式 DES 56/64 ECB/CBC/PCBC/CTR/… NoPadding/PKCS5Padding/… AES 128/192/256 ECB/CBC/PCBC/CTR/… NoPadding/PKCS5Padding/PKCS7Padding/… IDEA ...
  • 网络安全(通信加密、数据加密

    千次阅读 2021-09-28 21:04:00
    数据加密标准 DES、三重 DES、国际数据加密算法 IDEA 和 RC5 算法。 非对称机密(公钥加密) 概念 指收发双方使用不同密钥的密码,一个用来加密信息,一个用来解密信息,比私钥出现的晚一些。 优势 能适应网络的...
  • WiFi加密方式有哪些

    千次阅读 2019-10-12 23:17:09
    wifi加密方式:  1.安全模式: WPA 、WPA2、WPA/WPA2、WEP、802.1x(EAP)(企业版的WPA)、NONE 2.密码加密类型:AES(CMPP),TKIP,CMPP/TKIP 。WEP的是128bit和64bit加密。 目前最常用的是WPA2。 下面是...
  • 常见的加密算法有哪些

    千次阅读 2017-01-06 17:24:10
    1.MD5加密算法    MD5的全称是Message-Digest Algorithm 5,MD5可以将任意长度的“字节串”变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法,换句话说是,即使你看到源程序和算法描述,也无法将...
  • 网络篇 - https协议中的数据是否需要二次加密

    万次阅读 多人点赞 2019-01-23 00:58:36
    前面的文章说了OSI 七层模型,https 可以保证数据在传输层...那么如果使用了 https,传输的数据还需要做二次加密吗?是否过度设计的感觉,让我们来分析是否这个必要性。 目录: 何为 https 证书 https 证...
  • Java中常用加密方式

    万次阅读 2017-12-28 14:27:22
    一、Java常用加密方式 Base64加密算法(编码方式) MD5加密(消息摘要算法,验证信息完整性) 对称加密算法 非对称加密算法 数字签名算法 数字证书 二、分类 按加密算法是否需要key被分为两类: 不基于key的: Base64...
  • SSL证书的加密算法都有哪些

    千次阅读 2020-06-30 16:42:57
    DES(数据加密标准)于1976年推出,是最古老的对称加密方法之一。它是由IBM开发的,用于保护敏感的,未分类的电子政府数据,并于1977年被正式采用,以供联邦机构使用。DES使用56位加密密钥,它基于Feistel结构,该...
  • 常见的不可逆加密算法MD5,HMAC,SHA1、SHA-224、SHA-256、SHA-384,和SHA-512,其中SHA-224、SHA-256、SHA-384,和SHA-512我们可以统称为SHA2加密算法,SHA加密算法的安全性要比MD5更高,而SHA2加密算法比SHA1的...
  • 数据加密原理详解

    千次阅读 2019-11-29 11:05:36
    数据加密,是一门历史悠久的技术,指通过加密算法和加密密钥将明文转变为密文,而解密则是通过解密算法和解密密钥将密文恢复为明文。它的核心是密码学。 数据加密仍是计算机系统对信息进行保护的一种最可靠的办法。...
  • 数据加密技术和数据加密算法

    千次阅读 2019-04-15 10:16:26
    数据加密技术 现代社会对信息安全的需求大部分可以通过密码技术来实现。密码技术是信息安全技术中的核心技术,它主要由密码编码技术和密码分析技术两个分支组成。密码编码技术的主要任务是寻求产生安全性高的有效...
  • 一、前端加密有意义吗 正反派都。 1、无意义论 ​ 说无意义的,无非是说,对于后端而言,前端无论是直接发送明文密码还是使用md5等加密的密文密码,从数据层面来讲,都是『明文』,只要被劫持,就算是密文,也并不...
  • 数据加密技术是保障计算机网络通信安全的重要技术手段和防护策略,利用数据加密技术不仅可以有效地确保数据的完整性和保密性,提高信息的安全系数,而且还能够确保计算机网络通信技术的健康有序发展。1 网络通信和...
  • WPA2-PSK中的TKIP加密协议加密流程

    千次阅读 2021-02-03 15:44:37
    开发 TKIP 的主要动机,是为了升级旧式 WEP 硬件的安全性。 上一篇文章主要介绍了关于WPA2-PSK加密方式的密钥生成和... 生成数据加密所需密钥的配钥过程 生成带校验码MIC的数据 生成PTK 这个步骤在上一篇文章中.
  • 如何保证接口的安全性:加密协议(HTTPS)系统权限 接口签名 使用加密协议(HTTPS)来保证数据传输的安全性使用系统身份认证/权限管理来限制接口的非法访问使用接口签名来验证请求的签名值sign是否和接口生成的签名...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 301,539
精华内容 120,615
热门标签
关键字:

常用的数据加密协议有哪些