加解密_加解密工具 - CSDN
精华内容
参与话题
  • 几种常用的加解密的方法

    千次阅读 2016-08-25 10:42:47
    和安一起解决视频加密的需求,了解了一些相关的视频加解密的方法,故把相关的知识贴在这里 1. 全部加密(Naive Algorithm) 也就是使用标准 加密方法(比如DES)加密整个视频流。将视频比特流同传统的文本数据同样...

    参考链接:http://www.drmsoft.cn/DRM_Encryption/How_to_encrypt_video.html


    和安一起解决视频加密的需求,了解了一些相关的视频加解密的方法,故把相关的知识贴在这里

    1. 全部加密(Naive Algorithm)

    也就是使用标准 加密方法(比如DES)加密整个视频流。将视频比特流同传统的文本数据同样对待,没有利用视频压缩后数据流的特殊结 构。这种方法显然计算量巨大,很难保证视频的实时传输。

    2. 选择性加密(Selective Algorithm)

    选择性 加密是基于信源特征的视频加密方法的主要方向,其中可分为以下几类:

    (1) 基本的选择性加密算法是基于视频 IPB帧结构的。这其 中最有代表性且最早提出的一种加密方法是仅仅加密I帧。然而, Agi and Gong 表明由于帧间的相关性和主要是由于P帧和B帧中的I-block没有加密,这种仅加密I帧的方法不能达 到一个令人满意的密级。这样,有人提出加密I帧的同时还应加 密PB帧中的 I块。但这样增大 了计算量,同时视频图像中的运动信息也没有被加密,保密性仍不够好。

    于是,有人提出 利用提高视频序列中I帧频率的方法来 增加加密的内容从而提高密级。但这样很明显会增大加密的数据量,大大增加计算量,同时减小视频压缩率。

    (2) 仅加密头信息的方法:MPEG、H26X序列都按一定结构组织图像数据。例如,图片组、图片(帧)、片组、片、宏块组、宏块等 ,都由一个头信息开始,后接图像数据。经编码后的视频数据,要按标准规定的特定结构排列组织,收方按相同 的标准结构解码,才能正确恢复原视频图像。

    该算法的原理是对这些头信息数据加密,将其变成随 机序列,再与其它数据混合,使接收方在不知道密钥的情况下难以区分结构信息数据和视频信息数据,更难以知 道数据结构和数据的具体内容,难以按原数据结构解码接收到的视频编码数据,无法获得原图像,达到加密目的 。

    该算法仅加密头信息,安全性较低。因为按照编码标 准,头信息具有固定的位置和内容,所以含信息量很小,加密的意义不大。只要能分辨出头信息和视频数据,就 可以恢复视频图像,并且一旦知道头信息,密钥和密码算法也很容易破译。事实上,基于MPEG、H26x等标准的视频数据结构比较固定,视频数据本身又有很强的特征,这种加密方式比较 容易破译。

    该算法不降低压缩率。增加计算量很小,适用于各种 标准视频或图像压缩编码数据。

    经过该算法加密的视频编码数据没有通用的数据结构 信息,全部为随机序列。为便于合法收方接收,需加入加密同步信息,或保留原来部分同步信息,只加密其它结 构信息。如果加密结构信息误码,合法收方恢复视频图像也很困难。

    (3) Meyer and Gadegast 设计了一种新的似MPEG比特流,称之为 SECMPEG。SECAM既能使用标准加密算法DES和RSA又能实现不同级别的密级。但SECMPEG与标准的MPEG不兼容,需要设计专门的编解码器。

    第一级:加密所 有的头信息(Headers)

    第二级:加密所 有的头信息(Headers)和I-Block中的DC和AC系数

    第三级:加密 I帧和 PB帧中的所有 I-Block

    第四级:加密所 有的数据

    (4) 选择性加密的另一个主要的方向是由Bharat Bhargava等提出的加密DCT符号,运动矢量MV符号。文献[5]中将仅加密I帧的DCT符号位的方法称为VEA算法。第二种方 法除了加密I帧,还要加密 PB帧的 DCT符号位和运动矢量MV的符号位称之为MVEA算法。相对保密性要好得多的第三种方法是使用 密钥加密(如DES或IDEA)的密码学算法来对DCT系数或运动矢量 MV符号位进行加密 ,作者称之为RVEA算法。

    选择性加密的保 密性根据具体使用什么方法而定,一般选择性加密的计算量不大,且通常不会增大码流大小(改变I帧频率的选择性 加密算法除外)。

    3. Zig-Zag置乱算法(Zig-Zag Permutation Algorithm)

    Zig-Zag置乱算法的基本思想:使用一个随机的置乱序列来代替 Zig-Zag扫描顺序,来将各个8×8块的DCT系数映射成一个1×64矢量。

    基本算法由三步组成,步骤如下:

    (1)产生一个基数为64的置乱序列表;

    (2)把DC系数分成两个较小值的数。假设 DC是二进制数d7d6d5d4d3d2d1d0,将它分成两个数d7d6d5d4和d3d2d1d0,它们的范围都在[0,15]。然后将DC系 数置为d7d6d5d4,将原最后一个AC系数置为d3d2d1d0。(这种分离处理是基于以下两点:(1)通常DC系数值 远大于AC系数值,因此乱序后很容易被识别。分离变小后就难于从AC系数中区分出来;(2)最末一个AC系数作 用很小,通常为0,可以用其存放d3d2d1d0,恢复时取0值,不影响图象质量,也不增加数据量。)

    (3)用随机置乱序列表将经分离处理的8× 8块映射成1×64序列(vector)。

    该算法设计者自己指出,上述基本 算法对已知明文攻击是脆弱的,因此提供了两种附加方法增强算法的安全性(security):

    方法1: 将每8个块分成一组,把8个DC系数组合在一起(每系 数8位,恰好64位),然后运用DES加密。加密的结果按字节映射回到8个块中,然后(按上面1~3步骤)用分离 过程和置乱对每块进行加密。

    方法2: 产生两张不同的置乱序列表(表1和表2),对每个8×8 块抛掷硬币,反面用表1,正面用表2。抛币产生的正反序列和两张表作为密码。

    Zig-Zag置乱算法有严重的安全性问题[1]。文献[1]提供两种可以成功破解该算法的方法。Zig-Zag置乱算法速度很 快,不影响视频的实时传输。但是经过加密的视频压缩后码流大小将显著增加。因为运用非zig-zag顺序将8×8块映射到1×64的矢量,将会极大减少连续零个数,从而减少压缩率。文献[1]表明 视频流大小经加密后增加可达46%(表中最大值)。考虑到MPEG视频流数据量的巨大,这种大小增量是很难容 忍的。

    4.改变 Huffman码表算法

    改变Huffman码表的视频加密算法原理是:对于熵 编码用Huffman编码的视频编码标准,将通用Huffman码表修改后使用,修改后的特殊 Huffman码表作为密钥。非法接收方无此特殊码表,不能正确解码视频(图像)信息。

    该算法的安全性取决于保持压缩率不变的前提下, Huffman码表的可变空间(密码空间)。文献[8]做了定量的分析。

    改变Huffman码表,一般会降低 压缩率。Huffman编码是对数据流中出现频率高的位组合模式对应短码字,出现频率低的位组合模式对应长码字, 达到缩短平均码字,压缩数据的目的。Huffman码表通过统计码流中各种位组合模式出现的概率制作。本算法在改 变各组合模式对应的Huffman码字时,保持对应码字长度不变,即保持了特定出现概率的组合模式对应的特定码字 长度不变,也就保持了原压缩率不变。

    该算法完全不增加计算量。适用于使用Huffman编码的各种视频和图像压缩编码标准和算法。其缺点是安全性较差(密钥空间小)。

    5. 基于统计规律的视频加密算法

    基于统计规律的 视频加密算法在文献[1]中称 之为VEA算法(Video Encryption Algorithm)。文献[1]认为,压缩和 加密之间具有共同点,即两者都致力于去除冗余信息(Redundant information)。经MPEG压缩编码的码流具有一定的随机性。文献[1]把码流分成以字节为单元的流,每字节单元的 值为整数0~255。按字节测试统计(Byte-by-Byte),编码后字节值在0~255上的分布接近均匀,最高的字节出现 频率低于0.0178, 方差为10-6。最高相邻字节对(digrams:pairs of two adjacent numbers)的出现频率低于10-4,因此提出以下设想:将I帧分为8或16(通常16)大块( chunk),在任何chunk中,没有重复的字节模式。依据这个设想提出下面的VEA算法。

    (1)设一I帧的某个chunk为如下形式:a1 ,a2,a3,a4,...,a2n-1,a2n。

    (2)选择奇数号的字节组成奇队列(Odd List),选择偶数号的字节组成偶队列(Even List)。

    (3)将两个新数据流异或 

     

    (4)选择一种加密函数(例如DES)来加 密偶队列a2,a4,...,a2n。得到的密文为:c1,c2,…,cn, E(a2,a4,…,a2n).

    容易看出:如果a2a4…a2n没有 重复模式(repeated pattern),VEA算法密级就决定于function E。 因为a2,a4,…,a2n对a1,a3,…,a2n-1虽是简单异或,却是一次一 密乱码本(one-time pad)加密密钥,这是公认非常保密的。

    该方法不加密头信息结构格式等数据,只加密图像数 据本身。将待加密数据分为两半,一半用密码方法(函数E)加密,另一半用简单异或,因 此总体减少了计算量,提高了计算速度。前一半的计算速度取决于E。

    该方法不影响压缩率。适用于压缩的视频(或图像) 编码数据,而且压缩效果越好,加密效果也越好。

    6. 纯置乱算法 (Pure Permutation Algorithm)

    基于上一节中的 统计结果,我们知MPEG视频的字节流有一个非常低的字节对出现频率。因此,通常的利用数据频率,字节对频率特性等密码 分析方法对此没有用(至少很难)。

    Pure Permutation Algorithm 应运而生:Pure Permutation Algorithm简单的置乱字节流。置乱密码序列的基数是根据密级和应用需求动态 可变的。比如我们可以用64个数的置乱序列 或 一个长的 I帧的 1/8的置乱序列。

    Pure Permutation Algorithm的问题在于它对已知明文攻击非常脆弱。

    一旦通过比较密文和已知原始帧数据,获取了随机置乱序列,所有的帧将很容易被破译。为了找出随机置乱序列 ,我们需要已知随机序列长度倍数大小的明文。然而注意到MPEG数据流的单一性(unicity)和帧 大小在同一个数量级上,因此基于Shannon’s Theorem,如果已知一个I帧数据足以破译整个随机序列。



    展开全文
  • 加解密与编解码算法

    2019-05-27 02:18:58
    A). Base64 Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码。它将需要编码的数据拆分成字节数组。以3个字节为一组。按顺序排列24位数据,再把这24位数据分成4组,即每组6位。...

    A).  Base64

    Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码。它将需要编码的数据拆分成字节数组。以3个字节为一组。按顺序排列24位数据,再把这24位数据分成4组,即每组6位。再在每组的的最高位前补两个0凑足一个字节。这样就把一个3字节为一组的数据重新编码成了4个字节。当所要编码的数据的字节数不是3的整倍数,也就是说在分组时最后一组不够3个字节。这时在最后一组填充1到2个0字节。并在最后编码完成后在结尾添加1到2个“=”。例:将对ABC进行BASE64编码首先取ABC对应的ASCII码值。A(65)B(66)C(67)。再取二进制值A(01000001)B(01000010)C(01000011),然后把这三个字节的二进制码接起来(010000010100001001000011),再以6位为单位分成4个数据块并在最高位填充两个0后形成4个字节的编码后的值(00010000)(00010100)(00001001)(00000011)。蓝色部分为真实数据。再把这四个字节数据转化成10进制数得(16)(20)(19)(3)。最后根据BASE64给出的64个基本字符表,查出对应的ASCII码字符(Q)(U)(J)(D)。这里的值实际就是数据在字符表中的索引。注:BASE64字符表:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/

    解码过程就是把4个字节再还原成3个字节再根据不同的数据形式把字节数组重新整理成数据。

    不用于加解密,算法简单,主要用于显示传输,只能保证表面看不出源数据,长度不固定

    B).  DES

    DES是Data Encryption Standard(数据加密标准)的缩写。DES是一个分组加密算法,他以64位为分组对数据加密。同时DES也是一个对称算法:加密和解密用的是同一个算法。它的密匙长度是56位(因为每个第8位都用作奇偶校验),密匙可以是任意的56位的数,而且可以任意时候改变。其中有极少量的数被认为是弱密匙,但是很容易避开他们。所以保密性依赖于密钥。

    DES对64(bit)位的明文分组M进行操作,M经过一个初始置换IP置换成m0,将m0明文分成左半部分和右半部分m0=(L0,R0),各32位长。然后进行16轮完全相同的运算,这些运算被称为函数f,在运算过程中数据与密匙结合。经过16轮后,左,右半部分合在一起经过一个末置换,这样就完成了。在每一轮中,密匙位移位,然后再从密匙的56位中选出48位。通过一个扩展置换将数据的右半部分扩展成48位,并通过一个异或操作替代成新的32位数据,在将其置换换一次。这四步运算构成了函数f。然后,通过另一个异或运算,函数f的输出与左半部分结合,其结果成为新的右半部分,原来的右半部分成为新的左半部分。将该操作重复16次,就实现了。

    解密过程:在经过所有的代替、置换、异或盒循环之后,你也许认为解密算法与加密算法完全不同。恰恰相反,经过精心选择的各种操作,获得了一个非常有用的性质:加密和解密使用相同的算法。DES加密和解密唯一的不同是密匙的次序相反。如果各轮加密密匙分别是K1,K2,K3….K16那么解密密匙就是K16,K15,K14…K1。

    用与加密解密,长度不固定,现在已经不安全,可采用3des

    C).  MD5

    MD5的全称是Message-DigestAlgorithm 5,Message-Digest泛指字节串(Message)的Hash变换,就是把一个任意长度的字节串变换成一定长的大整数。请注意我使用了"字节串"而不是"字符串"这个词,是因为这种变换只与字节的值有关,与字符集或编码方式无关。 MD5将任意长度的"字节串"变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法,换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串,从数学原理上说,是因为原始的字符串有无穷多个,这有点象不存在反函数的数学函数。

    MD5的典型应用是对一段Message(字节串)产生fingerprint(指纹),以防止被"篡改"。举个例子,你将一段话写在一个叫readme.txt文件中,并对这个readme.txt产生一个MD5的值并记录在案,然后你可以传播这个文件给别人,别人如果修改了文件中的任何内容,你对这个文件重新计算MD5时就会发现。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的"抵赖",这就是所谓的数字签名应用。

    MD5还广泛用于加密和解密技术上,在很多操作系统中,用户的密码是以MD5值(或类似的其它算法)的方式保存的,用户Login的时候,系统是把用户输入的密码计算成MD5值,然后再去和系统中保存的MD5值进行比较,而系统并不"知道"用户的密码是什么。

    一些黑客破获这种密码的方法是一种被称为"跑字典"的方法。有两种方法得到字典,一种是日常搜集的用做密码的字符串表,另一种是用排列组合方法生成的,先用MD5程序计算出这些字典项的MD5值,然后再用目标的MD5值在这个字典中检索。即使假设密码的最大长度为8,同时密码只能是字母和数字,共26+26+10=62个字符,排列组合出的字典的项数则是P(62,1)+P(62,2)....+P(62,8),那也已经是一个很天文的数字了,存储这个字典就需要TB级的磁盘组,而且这种方法还有一个前提,就是能获得目标账户的密码MD5值的情况下才可以。

    不可逆加密,长度固定32或16位,为防止密码相同人根据自己密码推断别人密码,可进行加盐处理

    如果名为李自成的用户可以查看数据库,那么他可以观察到自己的密码和别人的密码加密后的结果都是一样,那么,别人用的和自己就是同一个密码,这样,就可以利用别人的身份登录了。
    那么我们以前的加密方法是否对这种行为失效了呢?其实只要稍微混淆一下就能防范住了,这在加密术语中称为“加盐”。具体来说就是在原有材料(用户自定义密码)中加入其它成分(一般是用户自有且不变的因素),以此来增加系统复杂度。当这种盐和用户密码相结合后,再通过摘要处理,就能得到隐蔽性更强的摘要值。下面请见代码:

    // 对密码进行加盐后加密,加密后再通过Hibernate往数据库里存        String changedPswd=DigestUtils.md5Hex(name+pswd);

    D).HASH

    现在是站在JAVA虚拟机的角度来看内存里面的布局,站在JAVA虚拟机的角度,在内存里面有好多好多个对象,这里用椭圆来代表一个个对象。一个程序运行起来的时候,可能会有很多个对象在内存里面分配,那么对于JAVA虚拟机来说,它运行的时候需要找到这些对象的地址,这些对象的地址怎么找呢?JAVA虚拟机会用一张表记录每一个对象在什么位置上,而这张表一般是用哈希编码来记录,每一个对象都有自己独一无二的哈希编码,根据这个编码就可以找到相关的对象,也就是说,根据这个编码你可以独一无二地确定这个对象,并且可以非常快地确定这个对象所在的位置,可以简单这么理解哈希编码的作用。但是JAVA本身对哈希编码的实现有点问题,它有可能是两个对象,内容不同,但是它们的哈希编码居然有可能是一样的,而且这个概率非常高。

    哈希编码是什么呢?它独一无二地代表了一个对象,并且通过哈希编码可以找到这个对象所在的位置。这就是哈希编码的作用。

    一般用对象内存地址作为hash值,可以保证每一对象hash值不同


    展开全文
  • 常用的加密解密及编码解码算法

    千次阅读 2013-01-04 13:41:17
    常用的加密解密及编码解码算法 http://iamcaihuafeng.blog.sohu.com/144299832.html 今天从Google Reader上发现了一篇文章,关于URL编码,写得还算不错,对自己也有一些启示。顺便把常用的加密及...

    常用的加密解密及编码解码算法


    今天从Google Reader上发现了一篇文章,关于URL编码,写得还算不错,对自己也有一些启示。顺便把常用的加密及编码算法总结一下。

    1.常用的加密及解密算法


    常规加密md5($pass)

    32位小写:d41d8cd98f00b204e9800998ecf8427e

    32位大写:D41D8CD98F00B204E9800998ECF8427E

    16位小写:8f00b204e9800998

    16位大写:8F00B204E9800998


    二次加密md5(md5($pass))    
    32位小写:74be16979710d4c4e7c6647856088456

    32位大写:80404D0C6D24E87F650FF7D1985CD762

    16位小写:16ae9f6a80547273

    16位大写:89E12A128CEBC695

    md5($pass.$salt) md5($salt.$pass) md5(md5($pass).$salt)
    md5(md5($salt).$pass) md5($salt.$pass.$salt) md5($salt.md5($pass))
    md5(md5($salt).md5($pass)) md5(md5($pass).md5($salt))

    2.md5
    Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC 1321(R.Rivest,MIT Laboratory for Computer Science and RSA Data Security Inc. April 1992)

    在90年代初由MIT Laboratory for Computer Science和RSA Data Security In
    c,的Ronald L. Rivest开发出来,经MD2、MD3和MD4发展而来。它的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数)。不管是MD2、MD4还是MD5,它们都需要获得一个随机长度的信息并产生一个128位的信息摘要。虽然这些算法的结构或多或少有些相似,但MD2的设计与MD4和MD5完全不同,那是因为MD2是为8位机器做设计优化的,而MD4和MD5却是面向32位的电脑。这三个算法的描述和c语言源代码在Internet RFC 1321中有详细的描述,这是一份最权威的文档,由Ronald L. Rivest在1992年8月向IETF提交。
    Via

    (PHP 3, PHP 4, PHP 5)

    md5 -- Calculate the md5 hash of a string
    Description
    string md5 ( string str [, bool raw_output] )


    Calculates the MD5 hash of str using the RSA Data Security, Inc. MD5 Message-Digest Algorithm, and returns that hash. The hash is a 32-character hexadecimal number. If the optional raw_output is set to TRUE, then the md5 digest is instead returned in raw binary format with a length of 16.

    注: The optional raw_output parameter was added in PHP 5.0.0 and defaults to FALSE

    3.md5_file
    (PHP 4 >= 4.2.0, PHP 5, PECL hash:1.1-1.3)

    md5_file — Calculates the md5 hash of a given file

    Description
    string md5_file ( string $filename [, bool $raw_output=false ] )
    Calculates the MD5 hash of the file specified by the filename parameter using the » RSA Data Security, Inc. MD5 Message-Digest Algorithm, and returns that hash. The hash is a 32-character hexadecimal number.

    Parameters

    filename
    The filename

    raw_output
    When TRUE, returns the digest in raw binary format with a length of 16. Defaults to FALSE.


    Return Values
    Returns a string on success, FALSE otherwise.

    4.sha1
    1 SHA1算法简介
      安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,那么这时候就会产生不同的消息摘要。
    Via

    (PHP 4 >= 4.3.0, PHP 5, PECL hash:1.1-1.3)

    sha1 — Calculate the sha1 hash of a string

    Description
    string sha1 ( string $str [, bool $raw_output=false ] )
    Calculates the sha1 hash of str using the » US Secure Hash Algorithm 1.

    Parameters

    str
    The input string.

    raw_output
    If the optional raw_output is set to TRUE, then the sha1 digest is instead returned in raw binary format with a length of 20, otherwise the returned value is a 40-character hexadecimal number. Defaults to FALSE.


    Return Values
    Returns the sha1 hash as a string.

    5.sha1_file
    (PHP 4 >= 4.3.0, PHP 5, PECL hash:1.1-1.3)

    sha1_file — Calculate the sha1 hash of a file

    Description
    string sha1_file ( string $filename [, bool $raw_output=false ] )
    Calculates the sha1 hash of filename using the » US Secure Hash Algorithm 1, and returns that hash. The hash is a 40-character hexadecimal number.

    Parameters

    filename
    The filename

    raw_output
    When TRUE, returns the digest in raw binary format with a length of 20. Defaults to FALSE.


    Return Values
    Returns a string on success, FALSE otherwise.

    6.crc32
    CRC校验实用程序库在数据存储和数据通讯领域,为了保证数据的正确,就不得不采用检错的手段。在诸多检错手段中,CRC是最著名的一种。CRC的全称是循环冗余校验,其特点是:检错能力极强,开销小,易于用编码器及检测电路实现。从其检错能力来看,它所不能发现的错误的几率仅为0.0047%以下。从性能上和开销上考虑,均远远优于奇偶校验及算术和校验等方式。因而,在数据存储和数据通讯领域,CRC无处不在:著名的通讯协议X.25的FCS(帧检错序列)采用的是CRC- CCITT,ARJ、LHA等压缩工具软件采用的是CRC32,磁盘驱动器的读写采用了CRC16,通用的图像存储格式GIF、TIFF等也都用CRC作为检错手段。
    Via

    (PHP 4 >= 4.0.1, PHP 5)

    crc32 — Calculates the crc32 polynomial of a string

    Description
    int crc32 ( string $str )
    Generates the cyclic redundancy checksum polynomial of 32-bit lengths of the str . This is usually used to validate the integrity of data being transmitted.

    Because PHP's integer type is signed, and many crc32 checksums will result in negative integers, you need to use the "%u" formatter of sprintf() or printf() to get the string representation of the unsigned crc32 checksum.

    Parameters

    str
    The data.


    Return Values
    Returns the crc32 checksum of str as an integer.

    6.RSA
    RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。
      RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价。即RSA的重大缺陷是无法从理论上把握它的保密性能如何,而且密码学界多数人士倾向于因子分解不是 NPC问题。
      RSA的缺点主要有:A)产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。 B)分组长度太大,为保证安全性,n 至少也要 600 bits以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化。目前,SET(Secure Electronic Transaction)协议中要求CA采用2048比特长的密钥,其他实体使用1024比特的密钥。
      这种算法1978年就出现了,它是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman。
      RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。
    Via

    7.对称加密算法
      简介:
      对称加密算法对称加密算法是应用较早的加密算法,技术成熟。在对称加密算法中,数据发信方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥。
      特点:
      对称加密算法的特点是算法公开、计算量小、加密速度快、加密效率高。
      不足之处是,交易双方都使用同样钥匙,安全性得不到保证。此外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的惟一钥匙,这会使得发收信双方所拥有的钥匙数量成几何级数增长,密钥管理成为用户的负担。对称加密算法在分布式网络系统上使用较为困难,主要是因为密钥管理困难,使用成本较高。而与公开密钥加密算法比起来,对称加密算法能够提供加密和认证却缺乏了签名功能,使得使用范围有所缩小。在计算机专网系统中广泛使用的对称加密算法有DES和IDEA等。美国国家标准局倡导的AES即将作为新标准取代DES。
      具体算法:
      3DES算法,Blowfish算法,RC5算法。
    Via

    8.Base64
    Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045~RFC2049,上面有MIME的详细规范。
      Base64编码可用于在HTTP环境下传递较长的标识信息。例如,在Java Persistence系统Hibernate中,就采用了Base64来将一个较长的唯一标识符(一般为128-bit的UUID)编码为一个字符串,用作HTTP表单和HTTP GET URL中的参数。在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式。此时,采用Base64编码不仅比较简短,同时也具有不可读性,即所编码的数据不会被人用肉眼所直接看到。
      然而,标准的Base64并不适合直接放在URL里传输,因为URL编码器会把标准Base64中的“/”和“+”字符变为形如“%XX”的形式,而这些“%”号在存入数据库时还需要再进行转换,因为ANSI SQL中已将“%”号用作通配符。
      为解决此问题,可采用一种用于URL的改进Base64编码,它不在末尾填充'='号,并将标准Base64中的“+”和“/”分别改成了“*”和“-”,这样就免去了在URL编解码和数据库存储时所要作的转换,避免了编码信息长度在此过程中的增加,并统一了数据库、表单等处对象标识符的格式。
    Via

    9.Urlencode
    Percent-encoding, also known as URL encoding, is a mechanism for encoding information in a Uniform Resource Identifier (URI) under certain circumstances. Although it is known as URL encoding it is, in fact, used more generally within the main Uniform Resource Identifier (URI) set, which includes both Uniform Resource Locator (URL) and Uniform Resource Name (URN). As such it is also used in the preparation of data of the "application/x-www-form-urlencoded" media type, as is often used in email messages and the submission of HTML form data in HTTP requests.
    Via

    展开全文
  • 加解密&编解码

    2017-12-28 08:22:49
    算法组 算法名称 简要介绍 是否对称算法(秘钥是否是一个) 是否可逆 用途 摘要算法 哈希算法 MD5 Message Digest Algorithm5 消息摘要算法,哈希算法 ...安全哈希算法(Secure Hash Algorithm
    算法组 算法名称 简要介绍 是否对称算法(秘钥是否是一个) 是否可逆 用途
    摘要算法
    哈希算法
    MD5 Message Digest Algorithm5 消息摘要算法,哈希算法
    可以保证数据的完整性
    不管多长的数据,都可以生成128位(16个字节)的散列值
    不涉及秘钥 不可逆  
    SHA-1 安全哈希算法(Secure Hash Algorithm)
    适用于长度不超过2^64二进制位的消息
    输出散列值固定长度:20个字节(160bit)
    不涉及秘钥 不可逆  
    SHA-224 适用于长度不超过2^64二进制位的消息
    输出散列值固定长度:28个字节(224bit)
    不涉及秘钥 不可逆  
    SHA256 适用于长度不超过2^64二进制位的消息
    输出散列值固定长度:32个字节(256bit)
    不涉及秘钥 不可逆  
    SHA384 适用于长度不超过2^128二进制位的消息
    输出散列值固定长度:48个字节(384bit)
    不涉及秘钥 不可逆  
    SHA512 适用于长度不超过2^128二进制位的消息
    输出散列值固定长度:64个字节(512bit)
    不涉及秘钥 不可逆  
    HmacSHA1 HMAC(Hash-based Message Authentication Code),秘钥相关的哈希运算消息认证码,HMAC运算利用哈希算法,以一个秘钥和一个消息为输入,生成一个消息摘要作为输出。可以看出,HMAC是需要一个秘钥的。所以HMAC-SHA1也是需要一个秘钥的,而SHA1不需要。      
    HmacSHA256        
    加密算法 DES Data Encryption Standard数据加密标准 对称 可逆  
    DES3   对称 可逆  
    RSA 公钥加密算法(RSA是三个人的名字中的某个字母) 非对称 可逆 公钥和私钥是一对。用公钥加密后,可以用私钥解密;用私钥加密后,可以用公钥解密。
      BASE64
    (不属于加密,只能算是一种编码转换)
    BASE64是网络上最常见的用户传输8Bit字节代码的编码方式之一。
    比如现在有一些“8bit的二进制数据(可能是图片,也可能是字符串)”需要在网络上传递,可以将这些“8bit的二进制数据”进行BASE64编码后再到网上传递,接收端接收后进行BASE64解码。
    对称 可逆 为什么要做BASE64编码?
    因为编码是128到255的ascii是不可见字符,在网络上传递时会经过很多路由设备,这些路由设备对不可能字符的处理方式不同,会导致错误,所以需要事先将这些不可见字符转成可见字符进行传输。
      URL编码 URL编码(URL encoding),也称作百分号编码(Percent-encoding),是特定上下文的统一资源定位符 (URL)的编码机制。

    将需要转码的字符转为16进制,然后从右到左,取4位(不足4位直接处理),每2位做一位,前面加上%,编码成%XY格式。
    比如:
    空格ASCII码是32,对应16进制是20,那么urlencode编码结果是:%20
    比如:
    中ASCII码是-10544,对应的16进制是FFFFFFFFFFFFD6D0,那么urlencode编码结果是:%D6%D0
    对称 可逆  
    展开全文
  • Java-数据加解密实现

    千次阅读 2018-08-31 14:09:11
    (1)对称加密:即加密与解密用的是同一把秘钥,常用的对称加密技术有DES、AES等。 (2)非对称加密:加密与解密用的是不同的秘钥,常用的非对称加密技术有RSA等。 为什么要有非对称加密、解密技术呢? 假设这样一...
  • 加解密方法简介

    2018-12-02 10:48:07
    采用单钥密码的加密方法,同一个密钥可以同时用来加密和解密,这种加密方法称为对称加密,也称为单密钥加密。常用的对称加密算法:  DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量...
  • 几种常用加密手段的加密与解密

    万次阅读 2018-07-05 21:48:23
    网络中传输敏感信息的时候通常会对字符串做加密解密处理1.Base64位加密(可加密解密) 最简单的加密方式,没有密钥,这种方式只要让别人拿到你的密文,就可以直接解密,只能用来迷惑,一般情况下不单独使用,因为真...
  • 常用加密解密算法【RSA、AES、DES、MD5】介绍和使用

    万次阅读 多人点赞 2016-12-06 11:23:12
    为了防止我们的数据泄露,我们往往会对数据进行加密,特别是敏感数据,我们要求的安全性更高。下面将介绍几种常用的加密算法使用。这些算法的加密对象都是基于二进制数据,如果要加密字符串就使用统一编码(如:utf8...
  • 在线解密解码工具

    万次阅读 2019-07-25 12:03:55
    DES加解密-站长工具 base64加解密-站长工具 base64转图片-站长工具 文本在线加解密 栅栏在线加解密 凯撒在线加解密1 凯撒在线加解密2 Fair-Play在线加解密 rabbit在线加解密 DES在线加解密 维吉尼亚在线加解密1 维...
  • 在线加密解密工具

    万次阅读 2018-12-16 08:55:18
    ☞http://tool.oschina.net/encrypt 一个在线加解密工具,界面如图:
  • ---用于加解密 第二种用法:私钥签名,公钥验签。---用于签名 有点混乱,不要去硬记,总结一下: 你只要想: 既然是加密,那肯定是不希望别人知道我的消息,所以只有我才能解密,所以可得出公钥负责加密,私钥负责...
  • SM2 加解密注意事项

    千次阅读 2018-04-11 15:17:07
    SM2 加解密联调时走过的坑1、密文数据,有些加密硬件出来密文结构为 C1|C2|C3 ,有些为 C1|C3|C2 , 需要对应密文结构做解密操作2、有些加密硬件,公钥前加04 ,私钥前加00,密文前加04 ,在处理时候,可以根据长度...
  • 目前测试内部在使用Jmeter对接口进行压测时,所有测试接口涉及到加解密之处都采用服务器关闭加解密服务后进行测试的方式,不能真正模拟线上环境的加解密过程。经过调研发现Jmeter支持BeanShell脚本,故采用在前置处理器...
  • 图解SM2算法流程——第4章 加密解密

    万次阅读 2018-12-29 10:58:12
    A.4 第4部分——密钥封装和加解密 A.4.1 加密(User A)   说明:第3步计算S=[h]PB略,因h=1。 A.4.2 解密(User B) 说明:第2步计算S=[h]C1略,因h=1。 A.4.3 原理 关键在于说明加密流程第4步计算的 ...
  • GPG对文件加解密的简单实现

    千次阅读 2018-06-04 20:10:02
    加解密实现 gui加解密 生成密钥 命令行方式加解密 信任度设置 方法一 方法二 参考链接 初识GPG 首先下载gpg套件,https://gpgtools.org/ 安装完成后首先建立公私钥,建立好后如下图: 加解密实现 ...
  • JAVA加密解密要用到的JAR包

    千次阅读 2016-02-22 23:56:45
    3DES加密解密算法  jce.jar  security/US_export_policy.jar  security/local_policy.jar  ext/sunjce_provider.jar
  • MySQL加密和解密

    万次阅读 2019-01-13 13:01:19
    MySQL数据库加密与解密:   数据加密、解密在安全领域非常重要。对程序员而言,在数据库中以密文方式存储用户密码对入侵者剽窃用户隐私意义重大。 有多种前端加密算法可用于数据加密、解密,下面我向您推荐一种...
  • Java SM2/SM3前后端加解密

    千次阅读 2018-12-24 16:26:51
    国密算法SM2/SM3前端js加解密、后端加解密,通过各种版本博客整合,终于实测通过 具体注意事项在压缩文件中的README.txt中,另外,前后端没有集成为web项目,所以前后端需要手动联调。csdn下载地址 ...
  • MD5的加密和解密算法

    万次阅读 2018-06-03 19:59:37
    package com.test; import java.security.MessageDigest; public class DecryptMD5 { // MD5加码。32位 public static String MD5(String inStr) { MessageDigest md5 = null;... md5 ...
  • RSA加密和解密的完整过程

    万次阅读 2014-06-30 10:18:12
    l 加密过程: ...B接收到密文c,使用自己的私钥解密c得到明文m和数字签名sB使用A的公钥解密数字签名s解密得到H(m).B使用相同的方法提取消息m的消息摘要h(m)B比较两个消息摘要。相同则验证成功;不同则验证
1 2 3 4 5 ... 20
收藏数 241,907
精华内容 96,762
关键字:

加解密