精华内容
参与话题
问答
  • 几种常用加密手段的加密与解密

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

    1.Base64位加密(可加密解密)
        最简单的加密方式,没有密钥,这种方式只要让别人拿到你的密文,就可以直接解密,只能用来迷惑,一般情况下不单独使用,因为真的并没有什么卵用~可以和其他加密方式混合起来,作为一层外部包装。
    import base64
    data = "abc"
    #加密
    m = Base64.encodestring(data)
    print m        
    #得到一个base64的值
    #解密
    date = Base64.decodestring(m)

    2.MD5加密(加密不可逆)
        
    MD5的全称是Message-Digest Algorithm 5(信息-摘要算法)。128位长度。目前MD5是一种不可逆算法。具有很高的安全性。它对应任何字符串都可以加密成一段唯一的固定长度的代码。(小贴士:为啥MD5加密算法不可逆呢~ 按道理来说有加密方式,就会有解密方式呀?因为MD5加密是有种有损的加密方式,比如一段数据为'123',我在加密的时候,遇到1和3都直接当做是a,加密后变成了'a2a',所以解密的时候就出现了4种组合'323''121''123''321',数据一多,自然找不到原始的数据了,当然这种方式加密的密文也不需要解密,需要的时候直接发送原始密文就好了~只是看不到密文原本的内容)
    import hashlib
    import base64
    data1 = "abc"
    data2 = 'def'
    hash = hashlib.md5()
    #多个文件多次加密
    hash.update(data1)
    hash.update(data2)
    value = hash.digest()
    print repr(value)        
    #得到一个二进制的字符串
    print hash.hexdigest()     #得到一个十六进制的字符串
    print base64.encodestring(value)    #得到base64的值

    3.sha1加密(加密不可逆)
        
    SHA1的全称是Secure Hash Algorithm(安全哈希算法) 。SHA1基于MD5,加密后的数据长度更长。它对长度小于264的输入,产生长度为160bit的散列值。比MD5多32位。因此,比MD5更加安全,但SHA1的运算速度就比MD5要慢了。使用方法和MD5其实是一样的~ 
    import hashlib
    #单个文件一次加密
    value = hashlib.sha1('This is a sha1 test!').hexdigest()
    print value 
          #得到一个十六进制的字符串

     
    4.AES加密(需要密钥才能解密)
        
    AES加密为对称密钥加密,加密和解密都是用同一个解密规则,AES加密过程是在一个4×4的字节矩阵上运作,这个矩阵又称为"状态(state)",因为密钥和加密块要在矩阵上多次的迭代,置换,组合,所以对加密快和密钥的字节数都有一定的要求,AES密钥长度的最少支持为128、192、256,加密块分组长度128位。这种加密模式有一个最大弱点:甲方必须把加密规则告诉乙方,否则无法解密。保存和传递密钥,就成了最头疼的问题。 
    from Crypto.Cipher import AES
    #密钥必须是16,24,32位的
    key  = '1234567890123456'     
    data = 'abc'
    BS = 16
    #加密函数,如果text不足16位就补足为16位,
    pad = lambda s: s + (BS-len(s) % BS) * chr(BS - len(s) % BS)
    #加密
    cipher = AES.new(key)
    encrypted = cipher.encrypt(pad(m))
    #解密
    cipher = AES.new(key)
    encrypted = cipher.decrypt(pad(m))

    5.RSA加密(公钥加密,私钥解密)
            
    它是目前最重要的加密算法!计算机通信安全的基石,保证了加密数据不会被破解。你可以想象一下,信用卡交易被破解的后果。甲乙双方通讯,乙方生成公钥和私钥,甲方获取公钥,并对信息加密(公钥是公开的,任何人都可以获取),甲方用公钥对信息进行加密,此时加密后的信息只有私钥才可以破解,所以只要私钥不泄漏,就能保证信息的安全性。
    import rsa 
    # 先生成一对密钥,然后保存.pem格式文件,当然也可以直接使用 
    (pubkey, privkey) = rsa.newkeys(1024) 
    pub = pubkey.save_pkcs1() 
    pubfile = open('public.pem','w+')
    pubfile.write(pub)
    pubfile.close()
    pri = privkey.save_pkcs1()
    prifile = open('private.pem','w+')
    prifile.write(pri)
    prifile.close()

    # load公钥和密钥
    message = 'hello'
    with open('public.pem') as publickfile:
    p = publickfile.read()
    pubkey = rsa.PublicKey.load_pkcs1(p)
    with open('private.pem') as privatefile:
    p = privatefile.read()
    privkey = rsa.PrivateKey.load_pkcs1(p)
     

    # 用公钥加密、再用私钥解密
    crypto = rsa.encrypt(message, pubkey)
    message = rsa.decrypt(crypto, privkey)
    print message
     

    # sign 用私钥签名认真、再用公钥验证签名
    signature = rsa.sign(message, privkey, 'SHA-1')
    rsa.verify('hello', signature, pubkey)
    展开全文
  • 171216—几种经典加密方法

    千次阅读 2017-12-16 21:15:10
    此篇只打算梳理几种加密方式的大体思路,具体公式不熟,不在整理范围内。Caesar加密即凯撒密码,基础的基础,核心是“k”偏移量。 其原理在于,按既有字母表顺序,以k为偏移量,使用一个字母后固定数值位的另一个...

    送走了四级考试之后,接下来可以好好学习了。

    此篇只打算梳理几种加密方式的大体思路,具体公式不熟,不在整理范围内。

    Caesar加密

    即凯撒密码,基础的基础,核心是“k”偏移量。
    其原理在于,按既有字母表顺序,以k为偏移量,使用一个字母后固定数值位的另一个字母代替该字母。例如:取k=3时,A应由D取代,整个字母表按序为“DEFGHIJKLMNOPQRSTUVWXYZ ABC”

    Vigenere密码

    维吉尼亚密码,是在凯撒密码上的升级改良。

    其目的在于对抗字频统计

    人们在单一恺撒密码的基础上扩展出多表密码,称为“维吉尼亚”密码。该方法最早记录在吉奥万·巴蒂斯塔·贝拉索( Giovan Battista Bellaso)于1553年所著的书《吉奥万·巴蒂斯塔·贝拉索先生的密码》(意大利语:La cifra del. Sig. Giovan Battista Bellaso)中。(百度百科)
    
    维吉尼亚密码引入了“密钥”的概念,即根据密钥来决定用哪一行的密表来进行替换,以此来对抗字频统计。假如以上面第一行代表明文字母,左面第一列代表密钥字母,对如下明文加密:
    TO BE OR NOT TO BE THAT IS THE QUESTION
    当选定RELATIONS作为密钥时,加密过程是:明文一个字母为T,第一个密钥字母为R,因此可以找到在R行中代替T的为K,依此类推,得出对应关系如下:
    密钥:RELAT IONSR ELATI ONSRE LATIO NSREL
    明文:TOBEO RNOTT OBETH ATIST HEQUE STION
    密文:KSMEH ZBBLK SMEMP OGAJX SEJCS FLZSY

    维吉尼亚密码字表:
    这里写图片描述

    想起小时候自己设密码时写的那个字表。。早就不知道丢哪去了。。

    栅栏式密码

    所谓栅栏密码,就是把要加密的明文分成N个一组,然后把每组的第1个字连起来,形成一段无规律的话。 不过栅栏密码本身有一个潜规则,就是组成栅栏的字母一般不会太多。(一般不超过30个,也就是一、两句话)
    特点:自身加密自身。自己打乱自己。需要的密钥是N。

    一般比较常见的是2栏的栅栏密码。
    
    比如明文:THERE IS A CIPHER
    
    去掉空格后变为:THEREISACIPHER
    
    两个一组,得到:TH ER EI SA CI PH ER
    
    先取出第一个字母:TEESCPE
    
    再取出第二个字母:HRIAIHR
    
    连在一起就是:TEESCPEHRIAIHR
    
    还原为所需密码。
    
    而解密的时候,我们先把密文从中间分开,变为两行:
    
    T E E S C P E
    H R I A I H R
    
    再按上下上下的顺序组合起来:
    THEREISACIPHER
    
    分出空格,就可以得到原文了:
    THERE IS A CIPHER

    矩阵置换密码

    和栅栏式密码一个味道。
    置换也是一个简单的换位,每个置换都可以用一个置换矩阵Ek来表示。每个置换都有一个与之对应的逆置换Dk。置换密码的特点是仅有一个发送方和接受方知道的加密置换(用于加密)及对应的逆置换(用于解密)。它是对明文L长字母组中的字母位置进行重新排列,而每个字母本身并不改变。
    上题:

    明文:MEET ME AFITER THE TOGO  PARTY
    使用矩阵置换密码加密,矩阵3×8 ,分别用k=12345678和k=34127856
    

    这里写图片描述

    RSA算法(传说中及其可靠的非对称加密算法)

    该算法使用的参数有三个。n,e,d; 凑成公开密钥(n,e)和私有密钥(n,d).
    RSA的可靠性来源于大的素数分解。
    首先,需要选定两个足够大的素数p 和 q ( p 和 q 必须保密)。他们的乘积即为n的值。
    e不是自然对数!!e是一个和与(p-1)(q-1)互素的数,可以选定。
    私人密钥d由计算得到。
    (我都在说些什么。。)
    这里写图片描述

    展开全文
  • 常用密码加密方法

    千次阅读 2015-06-26 17:51:12
    RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。 RSA的算法涉及三个参数,n...
    RSA算法
    RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。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;
    1.RSA非对称加密的一些非常规应用 http://www.icylife.net/yunshu/show.php?id=471
    2.RSA的解释 http://hi.baidu.com/yhgzi/blog/item/55a6b6641a4a63f5f7365431.html
    四方密码
    四方密码用4个5×5的矩阵来加密。每个矩阵都有25个字母(通常会取消Q或将I,J视作同一样,或改进为6×6的矩阵,加入10个数字)。
    首先选择两个英文字作密匙,例如example和keyword。对于每一个密匙,将重复出现的字母去除,即example要转成exampl,然后将每个字母顺序放入矩阵,再将余下的字母顺序放入矩阵,便得出加密矩阵。
    将这两个加密矩阵放在左上角和右下角,余下的两个角放a到z顺序的矩阵:
    a b c d e E X A M P
    f g h i j L B C D F
    k l m n o G H I J K
    p r s t u N O R S T
    v w x y z U V W Y Z
    K E Y W O a b c d e
    R D A B C f g h i j
    F G H I J k l m n o
    L M N P S p r s t u
    T U V X Z v w x y z
    加密的步骤:
    两个字母一组地分开讯息:(例如hello world变成he ll ow or ld)
    找出第一个字母在左上角矩阵的位置
    a b c d e E X A M P
    f g h i j L B C D F
    k l m n o G H I J K
    p r s t u N O R S T
    v w x y z U V W Y Z
    K E Y W O a b c d e
    R D A B C f g h i j
    F G H I J k l m n o
    L M N P S p r s t u
    T U V X Z v w x y z
    同样道理,找第二个字母在右下角矩阵的位置:
    a b c d e E X A M P
    f g h i j L B C D F
    k l m n o G H I J K
    p r s t u N O R S T
    v w x y z U V W Y Z
    K E Y W O a b c d e
    R D A B C f g h i j
    F G H I J k l m n o
    L M N P S p r s t u
    T U V X Z v w x y z
    找右上角矩阵中,和第一个字母同行,第二个字母同列的字母:
    a b c d e E X A M P
    f g h i j L B C D F
    k l m n o G H I J K
    p r s t u N O R S T
    v w x y z U V W Y Z
    K E Y W O a b c d e
    R D A B C f g h i j
    F G H I J k l m n o
    L M N P S p r s t u
    T U V X Z v w x y z

    找左下角矩阵中,和第一个字母同列,第二个字母同行的字母:
    a b c d e E X A M P
    f g h i j L B C D F
    k l m n o G H I J K
    p r s t u N O R S T
    v w x y z U V W Y Z
    K E Y W O a b c d e
    R D A B C f g h i j
    F G H I J k l m n o
    L M N P S p r s t u
    T U V X Z v w x y z
    这两个字母就是加密过的讯息。
    hello world的加密结果:
    he lp me ob iw an ke no bi
    FY GM KY HO BX MF KK KI MD
    [编辑]二方密码
    二方密码(en:Two-square_cipher)比四方密码用更少的矩阵。
    得出加密矩阵的方法和四方密码一样。
    例如用「example」和「keyword」作密匙,加密lp。首先找出第一个字母(L)在上方矩阵的位置,再找出第二个字母(D)在下方矩阵的位置:
    E X A M P
    L B C D F
    G H I J K
    N O R S T
    U V W Y Z
    K E Y W O
    R D A B C
    F G H I J
    L M N P S
    T U V X Z
    在上方矩阵找第一个字母同行,第二个字母同列的字母;在下方矩阵找第一个字母同列,第二个字母同行的字母,那两个字母就是加密的结果:
    E X A M P
    L B C D F
    G H I J K
    N O R S T
    U V W Y Z
    K E Y W O
    R D A B C
    F G H I J
    L M N P S
    T U V X Z
    help me的加密结果:
    he lp me
    HE DL XW
    替换加密法
    用一个字符替换另一个字符的加密方法。
    换位加密法
    重新排列明文中的字母位置的加密法。
    回转轮加密法
    一种多码加密法,它是用多个回转轮,每个回转轮实现单码加密。这些回转轮可以组合在一起,在每个字母加密后产生一种新的替换模式。
    多码加密法
    一种加密法,其替换形式是:可以用多个字母来替换明文中的一个字母。
    换位加密法
    重新排列明文中的字母位置的加密法。
    夹带法
    通过隐藏消息的存在来隐藏消息的方法。
    Kasiski法
    于19世纪由波兰的一个军官发现的,这种方法通过查看重复密文部分,来发现多码密钥的长度。
    三分密码
    首先随意制造一个3个3×3的Polybius方格替代密码,包括26个英文字母和一个符号。然后写出要加密的讯息的三维坐标。讯息和坐标四个一列排起,再顺序取横行的数字,三个一组分开,将这三个数字当成坐标,找出对应的字母,便得到密文。
    仿射密码
    仿射密码是一种替换密码。它是一个字母对一个字母的。
    它的加密函数是<math>e(x)=ax+b\pmod</math>,其中
    <math>a</math>和<math>m</math>互质。
    <math>m</math>是字母的数目。
    译码函数是<math>d(x)=a^(x-b)\pmod</math>,其中<math>a^</math>是<math>a</math>在<math>\mathbb_</math>群的乘法逆元。
    波雷费密码
    1选取一个英文字作密匙。除去重复出现的字母。将密匙的字母逐个逐个加入5×5的矩阵内,剩下的空间将未加入的英文字母依a-z的顺序加入。(将Q去除,或将I和J视作同一字。)
    2将要加密的讯息分成两个一组。若组内的字母相同,将X(或Q)加到该组的第一个字母后,重新分组。若剩下一个字,也加入X字。
    3在每组中,找出两个字母在矩阵中的地方。
    若两个字母不同行也不同列,在矩阵中找出另外两个字母,使这四个字母成为一个长方形的四个角。
    若两个字母同行,取这两个字母右方的字母(若字母在最右方则取最左方的字母)。
    若两个字母同列,取这两个字母下方的字母(若字母在最下方则取最上方的字母)。
    新找到的两个字母就是原本的两个字母加密的结果。
    RC5
    1、创建密钥组,RC5算法加密时使用了2r+2个密钥相关的的32位字: ,这里r表示加密的轮数。创建这个密钥组的过程是非常复杂的但也是直接的,首先将密钥字节拷贝到32位字的数组L中(此时要注意处理器是little-endian顺序还是big-endian顺序),如果需要,最后一个字可以用零填充。然后利用线性同余发生器模2初始化数组S:
    对于i=1到2(r+1)-1: (本应模 ,本文中令w=32)
    其中对于16位字32位分组的RC5,P=0xb7e1 Q=0x9e37
    对于32位字和64位分组的RC5,P=0xb7e15163 Q=0x9e3779b9
    对于64位字和128位分组,P=0xb7151628aed2a6b Q=0x9e3779b97f4a7c15
    最后将L与S混合,混合过程如下:
    i=j=0
    A=B=0
    处理3n次(这里n是2(r+1)和c中的最大值,其中c表示输入的密钥字的个数)
    2、加密处理,在创建完密钥组后开始进行对明文的加密,加密时,首先将明文分组划分为两个32位字:A和B(在假设处理器字节顺序是little-endian、w=32的情况下,第一个明文字节进入A的最低字节,第四个明文字节进入A的最高字节,第五个明文字节进入B的最低字节,以此类推),其中操作符<<<表示循环左移,加运算是模 (本应模 ,本文中令w=32)的。
    输出的密文是在寄存器A和B中的内容
    3、解密处理,解密也是很容易的,把密文分组划分为两个字:A和B(存储方式和加密一样),这里符合>>>是循环右移,减运算也是模 (本应模 ,本文中令w=32)的。
    ADFGVX密码
    假设我们需要发送明文讯息 "Attack at once", 用一套秘密混杂的字母表填满 Polybius 方格,像是这样:
    A D F G X
    A b t a l p
    D d h o z k
    F q f v s n
    G g j c u x
    X m r e w y
    i 和 j 视为同个字,使字母数量符合 5 × 5 格。之所以选择这五个字母,是因为它们译成摩斯密码时不容易混淆,可以降低传输错误的机率。使用这个方格,找出明文字母在这个方格的位置,再以那个字母所在的栏名称和列名称代替这个字母。可将该讯息可以转换成处理过的分解形式。
    A T T A C K A T O N C E
    AF AD AD AF GF DX AF AD DF FX GF XF
    下一步,利用一个移位钥匙加密。假设钥匙字是「CARGO」,将之写在新格子的第一列。再将上一阶段的密码文一列一列写进新方格里。
    C A R G O
    _________
    A F A D A
    D A F G F
    D X A F A
    D D F F X
    G F X F X
    最后,按照钥匙字字母顺序「ACGOR」依次抄下该字下整行讯息,形成新密文。如下:
    FAXDF ADDDG DGFFF AFAXX AFAFX
    在实际应用中,移位钥匙字通常有两打字符那么长,且分解钥匙和移位钥匙都是每天更换的。
    ADFGVX
    在 1918年 6月,再加入一个字 V 扩充。变成以 6 × 6 格共 36 个字符加密。这使得所有英文字母(不再将 I 和 J 视为同一个字)以及数字 0 到 9 都可混合使用。这次增改是因为以原来的加密法发送含有大量数字的简短信息有问题。
    希尔密码
    加密
      例如:密钥矩阵
      1 3
      0 2
      明文:HI THERE
      去空格,2个字母一组,根据字母表顺序换成矩阵数值如下,末尾的E为填充字元:
      HI TH ER EE
      8 20 5 5
      9 8 18 5
      HI 经过矩阵运算转换为 IS,具体算法参考下面的说明:
      |1 3| 8 e1*8+3*9=35 MOD26=9 =I
      |0 2| 9 e0*8+2*9=18 MOD26=18=S
      用同样的方法把“HI THERE”转换为密文“IS RPGJTJ”,注意明文中的两个E分别变为密文中的G和T。
    解密
      解密时,必须先算出密钥的逆矩阵,然后再根据加密的过程做逆运算。
      逆矩阵算法公式:
      |A B| = 1/(AD-BC) * | D -B|
      |C D| |-C A|
      例如密钥矩阵=
      |1 7|
      |0 3|
      AD-BC=1*3-0*7=3 3*X=1 mod26 所以 X=9
      因此
      |1 7| 的逆矩阵为: 9 * |3 -7|
      |0 3| |0 1|
      假设密文为“FOAOESWO”
      FO AO ES WO
       6 1 5 23
      15 15 19 15
      9* |3 -7| | 6| = 9*(3*6-7*15)=-783 mod26 = 23=W
       |0 1| |15| = 9*(0*6+1*15)= 135 mod26 = 5 =E
      所以密文“FOAOESWO”的明文为“WEREDONE”
    维吉尼亚密码
    TO BE OR NOT TO BE THAT IS THE QUESTION
    当选定RELATIONS作为密钥时,加密过程是:明文一个字母为T,第一个密钥字母为R,因此可以找到在R行中代替T的为K,依此类推,得出对应关系如下:
    密钥:RELAT IONSR ELATI ONSRE LATIO NSREL
    明文:TOBEO RNOTT OBETH ATIST HEQUE STION
    密文:KSMEH ZBBLK SMEMP OGAJX SEJCS FLZSY
    。埃特巴什码
    埃特巴什码是一个系统:最后一个字母代表第一个字母,倒数第二个字母代表第二个字母。
    在罗马字母表中,它是这样出现的:

    常文:a b c d e f g h i j k l m n o p q r s t u v w x y z
    密文:Z Y X W V U T S R Q P O N M L K J I H G F E D C B A


    这种密码是由熊斐特博士发现的。熊斐特博士为库姆兰《死海古卷》的最初研究者之一,他在《圣经》历史研究方面最有名气的著作是《逾越节的阴谋》。他运用这种密码来研究别人利用其他方法不能破解的那些经文。这种密码被运用在公元1世纪的艾赛尼/萨多吉/拿撒勒教派的经文中,用以隐藏姓名。其实早在公元前500年,它就被抄经人用来写作《耶利米书》〔1〕耶利米是活动在公元前627-前586年间的犹太先知,圣经旧约书中有许多关于他的记载。在他离世前,犹太领土已被巴比伦人占领。〔1〕。它也是希伯来文所用的数种密码系统之一。
    白金特、雷伊和林肯在《弥赛亚的遗产》中写道,熊斐特博士于《艾赛尼派的奥德赛》一书中描述他如何对圣殿骑士们崇拜的鲍芙默神痴迷,又如何用埃特巴什码分析这个词。令他惊奇的是,破译出的词“Sophia”为希腊语中的“智慧”。
    在希伯来语中,“Baphomet”一词拼写如下——要记住,希伯来语句必须从右向左读:
    〔 taf 〕 〔 mem 〕 〔 vav 〕 〔 pe 〕 〔 bet 〕
    将埃特巴什码用于上述字母,熊斐特博士得到如下结果:
    〔 alef 〕 〔 yud 〕 〔 pe 〕 〔 vav 〕 〔 shin 〕
    即为用希伯来语从右向左书写的希腊词“Sophia”。
    Sophia的词义不仅限于“智慧”。它还是一位女神的名字——这位女神照说应该是上帝的新娘。许多人相信,圣殿骑士们崇拜这位女神。〔1〕作者引用的是诺斯替学派的神话:“不可知解”的至尊上帝,“源化”出最早的几位亚神,最后一位就是索菲亚——“智慧”。她极求得到对上帝“神质”的“真知”——她名字第二意义的来源,而这种不合神性的欲望“孕生”了邪神,即创造宇宙的另一位“上帝”。诺斯替派将他等同于旧约中的上帝,来解释亚当夏娃堕降尘间和大洪水的事件。〔1〕
    圣殿骑士们通晓埃特巴什码的事实,强烈表明有些来自一个拿撒勒教派的人置身于圣殿骑士中间。
    丹·布朗关于英语是“最纯洁的”语言的观念可能是空想的,但并不是什么新理论。莱纳堡附近有个叫做莱纳浴泉的村庄,那里的神父亨利·布德写过一本名为《真实的凯尔特语》的书,也声称英语是一种神圣的语言,或许在“巴比伦塔”〔2〕用方舟拯救人类的诺亚,有一支后代在巴比鲁尼亚定居。他们在史纳尔平原建造高塔,试图攀登天界。恼怒的上帝分化了在此之前统一使用的语言,而交流不通引发的混乱和争执使人前功尽弃。〔2〕堕毁前就已得到使用。据说,这本书从字面上是不能理解的,它是用密码写成的,传达一个不同的信息。我们还应该记住,与其他的一些欧洲语言一样,英语的许多词汇源于拉丁。正如翠茜·特威曼在《达戈贝特复仇记》杂志中指出的那样,英语因为有26个字母,可以完美地用于埃特巴什码。其他欧洲语言所用的字母则不成偶数。此外,她始终认为郇山隐修会偏爱英语

    加密方法概况
    DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合; 3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高;
    RC2和 RC4:用变长密钥对大量数据进行加密,比 DES 快;
    IDEA(International Data Encryption Algorithm)国际数据加密算法,使用 128 位密钥提供非常强的安全性;
    RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件快的长度也是可变的;
    DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准);
    AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高,目前 AES 标准的一个实现是 Rijndael 算法;
    BLOWFISH,它使用变长的密钥,长度可达448位,运行速度很快;
    其它算法,如XOR 、MD5、SHA1、C#、ElGamal、Deffie-Hellman、新型椭圆曲线算法ECC等。
    展开全文
  • 几种常见加密方式介绍

    万次阅读 2016-12-08 22:11:38
    在完全理解HTTPS之前,有必要弄清楚一些密码学相关的概念,比如:明文、密文、密码、密钥、对称加密、非对称加密、摘要、数字签名、数字证书。 密码密码学中的密码(cipher)和我们日常生活中所

    密码学在计算机科学中使用非常广泛,HTTPS就是建立在密码学基础之上的一种安全的通信协议。HTTPS早在1994年由网景公司首次提出,而如今在众多互联网厂商的推广之下HTTPS已经被广泛使用在各种大小网站中。在完全理解HTTPS之前,有必要弄清楚一些密码学相关的概念,比如:明文、密文、密码、密钥、对称加密、非对称加密、摘要、数字签名、数字证书。
    密码

    密码学中的密码(cipher)和我们日常生活中所说的密码不太一样,计算机术语『密码 cipher』是一种用于加密或者解密的算法,而我们日常所使用的『密码 password』是一种口令,它是用于认证用途的一组文本字符串,这里我们要讨论的是前者:cipher。

    密钥

    密钥是一种参数,它是在使用密码(cipher)算法过程中输入的参数。同一个明文在相同的密码算法和不同的密钥计算下会产生不同的密文。很多知名的密码算法都是公开的,密钥才是决定密文是否安全的重要参数,通常密钥越长,破解的难度越大,比如一个8位的密钥最多有256种情况,使用穷举法,能非常轻易的破解,知名的DES算法使用56位的密钥,目前已经不是一种安全的加密算法了,主要还是因为56位的密钥太短,在数小时内就可以被破解。密钥分为对称密钥与非对称密钥。

    明文/密文

    明文(plaintext)是加密之前的原始数据,密文是通过密码(cipher)运算后得到的结果成为密文(ciphertext)

    对称密钥

    对称密钥(Symmetric-key algorithm)又称为共享密钥加密,对称密钥在加密和解密的过程中使用的密钥是相同的,常见的对称加密算法有DES、3DES、AES、RC5、RC6。对称密钥的优点是计算速度快,但是他也有缺点,密钥需要在通讯的两端共享,让彼此知道密钥是什么对方才能正确解密,如果所有客户端都共享同一个密钥,那么这个密钥就像万能钥匙一样,可以凭借一个密钥破解所有人的密文了,如果每个客户端与服务端单独维护一个密钥,那么服务端需要管理的密钥将是成千上万,这会给服务端带来噩梦。下面就是一个简单的对称加密,将明文加密成ASCII。

    # 加密的方式:在ASCII的基础上 + 密钥的值

    def encipher(plain_text, key):  
       # 加密
    cipher_text = []
    for c in plain_text:
    cipher_text.append(str(ord(c) + key))
    return ' '.join(cipher_text)
    def decipher(cipher_text, key):
       # 解密    
    plain_text = []
    for c in cipher_text.split(" "):
    plain_text.append(chr(int(c)+key))
    return "".join(plain_text)if __name__ == '__main__':
    print "cipher_text:", encipher("abcdef", 0)
    print "plain_text:", decipher("97 98 99 100 101 102", 0)

    非对称密钥
    非对称密钥(public-key cryptography),又称为公开密钥加密,服务端会生成一对密钥,一个私钥保存在服务端,仅自己知道,另一个是公钥,公钥可以自由发布供任何人使用。客户端的明文通过公钥加密后的密文需要用私钥解密。非对称密钥在加密和解密的过程的使用的密钥是不同的密钥,加密和解密是不对称的,所以称之为非对称加密。与对称密钥加密相比,非对称加密无需在客户端和服务端之间共享密钥,只要私钥不发给任何用户,即使公钥在网上被截获,也无法被解密,仅有被窃取的公钥是没有任何用处的。常见的非对称加密有RSA,非对称加解密的过程:
    服务端生成配对的公钥和私钥
    私钥保存在服务端,公钥发送给客户端
    客户端使用公钥加密明文传输给服务端
    服务端使用私钥解密密文得到明文
    数字签名
    数据在浏览器和服务器之间传输时,有可能在传输过程中被冒充的盗贼把内容替换了,那么如何保证数据是真实服务器发送的而不被调包呢,同时如何保证传输的数据没有被人篡改呢,要解决这两个问题就必须用到数字签名,数字签名就如同日常生活的中的签名一样,一旦在合同书上落下了你的大名,从法律意义上就确定是你本人签的字儿,这是任何人都没法仿造的,因为这是你专有的手迹,任何人是造不出来的。那么在计算机中的数字签名怎么回事呢?数字签名就是用于验证传输的内容是不是真实服务器发送的数据,发送的数据有没有被篡改过,它就干这两件事,是非对称加密的一种应用场景。不过他是反过来用私钥来加密,通过与之配对的公钥来解密。
    第一步:服务端把报文经过Hash处理后生成摘要信息Digest,摘要信息使用私钥private-key加密之后就生成签名,服务器把签名连同报文一起发送给客户端。

    第二步:客户端接收到数据后,把签名提取出来用public-key解密,如果能正常的解密出来Digest2,那么就能确认是对方发的。

    第三步:客户端把报文Text提取出来做同样的Hash处理,得到的摘要信息Digest1,再与之前解密出来的Digist2对比,如果两者相等,就表示内容没有被篡改,否则内容就是被人改过了。因为只要文本内容哪怕有任何一点点改动都会Hash出一个完全不一样的摘要信息出来。

    数字证书

    数字证书简称CA,它由权威机构给某网站颁发的一种认可凭证,这个凭证是被大家(浏览器)所认可的,为什么需要用数字证书呢,难道有了数字签名还不够安全吗?有这样一种情况,就是浏览器无法确定所有的真实服务器是不是真的是真实的,举一个简单的例子:A厂家给你们家安装锁,同时把钥匙也交给你,只要钥匙能打开锁,你就可以确定钥匙和锁是配对的,如果有人把钥匙换了或者把锁换了,你是打不开门的,你就知道肯定被窃取了,但是如果有人把锁和钥匙替换成另一套表面看起来差不多的,但质量差很多的,虽然钥匙和锁配套,但是你却不能确定这是否真的是A厂家给你的,那么这时候,你可以找质检部门来检验一下,这套锁是不是真的来自于A厂家,质检部门是权威机构,他说的话是可以被公众认可的(呵呵)。

    同样的, 因为如果有人(张三)用自己的公钥把真实服务器发送给浏览器的公钥替换了,于是张三用自己的私钥执行相同的步骤对文本Hash、数字签名,最后得到的结果都没什么问题,但事实上浏览器看到的东西却不是真实服务器给的,而是被张三从里到外(公钥到私钥)换了一通。那么如何保证你现在使用的公钥就是真实服务器发给你的呢?我们就用数字证书来解决这个问题。数字证书一般由数字证书认证机构(Certificate Authority)颁发,证书里面包含了真实服务器的公钥和网站的一些其他信息,数字证书机构用自己的私钥加密后发给浏览器,浏览器使用数字证书机构的公钥解密后得到真实服务器的公钥。这个过程是建立在被大家所认可的证书机构之上得到的公钥,所以这是一种安全的方式。

    展开全文
  • 常见加密方式!

    千次阅读 2017-08-28 16:32:04
    简单的java加密算法有: BASE 严格地说,属于编码格式,而非加密算法 MD(Message Digest algorithm ,信息摘要算法) SHA(Secure Hash Algorithm,安全散列算法) HMAC(Hash Message Authentication Code,散列...
  • 浅谈常见的七种加密算法及实现

    万次阅读 多人点赞 2018-09-10 18:38:26
    前言 数字签名、信息加密 是前后端开发都...这里简单的给大家介绍几种常见的签名加密算法和一些典型场景下的应用。 正文 1. 数字签名 数字签名,简单来说就是通过提供 可鉴别 的 数字信息 验证 自身身份 ...
  • 常见的几种加密方法和实现

    千次阅读 2018-11-27 16:09:40
    常见的几种加密方法
  • 常见的3种加密方式

    千次阅读 2018-05-21 10:03:24
    单向散列加密:根据输入长度信息进行散列计算,得到固定长度输出,常用于密码保存,常见的是MD5,SHA等,通常会加盐处理 非对称加密:加密和解密使用的是不同的秘钥,其中一个对外公开,称为公钥,另一个被称为私钥,...
  • 数据加密技术是网络中最基本的安全技术,主要是通过对网络中传输的信息进行数据加密来保障其安全性,这是一种主动安全防御策略,用很小的代价即可为信息提供相当大的安全保护。 一、加密的基本概念  "加密",是...
  • 常见加密算法常见加密算法原理

    万次阅读 2018-08-09 17:16:11
    加密算法和协议 对称加密 简介:加密和解密使用同一个密钥 常见的算法: - DES:Data Encryption Standard; - 3DES:Triple DES; - AES:Advanced Encryption Standard; (128bits, 192bits, 256bits, 384...
  • Java常用加密算法

    千次阅读 2016-04-01 09:56:09
    Java加密技术
  • 几种常见加密算法

    千次阅读 2019-06-27 09:36:02
    一、加密算法分类 双向加密算法 单向加密算法(散列算法) 对称加密算法 非对称加密算法 MD5,SHA1,HMAC AES、DES、3DES RSA,DSA,ECC 双方采用共同的密钥和加密算法 A用B的公钥将消息加密,...
  • Android中常用加密算法及运用示例

    千次阅读 2018-03-28 15:21:21
    介绍 加密是保障信息安全的一个组成部分,现在说的加密是一个宽泛的概念,包括解密。 定义: 是以某种特殊的算法改变原有...非对称加密算法 (公钥、私钥):加密和解密密钥不同,但是是一对,例如RSA、ECC 摘要...
  • php中常用加密算法及实现

    千次阅读 2018-05-30 17:39:46
    常用算法简介:1)md5()算法:把任意长度的信息进行散列计算,得到固定长度的输出,这个 散列计算过程是单向的,即不能对固定长度的输出信息进行计算从而得到输入信息。...3)Sha1()算法:是一种单向加密算法...
  • 常见加密算法&HTTP数据传递的加密

    千次阅读 2017-03-16 14:19:14
    数字签名,对称加密,非对称加密
  • 常用加密算法之非对称加密算法

    万次阅读 2018-03-16 21:44:45
    非对称加密算法 非对称加密算法是一种密钥的保密方法。非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有...
  • 网络安全之常用加密算法是什么?

    千次阅读 2018-10-15 13:40:46
    文章目录加密分类对称加密非对称加密总结 ...  对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中。对称加密通常使用的是相对较小的密钥,一般小于256 bit。因为密钥越大,加密越强...
  • 常见加密算法介绍

    千次阅读 2020-01-02 15:48:31
    做为一个开发人员,了解一些加密算法是很有必要的,通过加密算法,我们能完成数据通信的三个目标,分别为数据的保密性、数据的完整性、源和目标用户的合法性,而常见加密算法类型大体可以分为三类:对称加密,非...
  • 几种常用加密算法比较

    万次阅读 多人点赞 2013-06-20 11:02:13
    由于计算机软件的非法复制,通信的泄密、数据安全...现在我们就几种常用加密算法给大家比较一下。 DES加密算法 DES加密算法是一种分组密码,以64位为分组对数据加密,它的密钥长度是56位,加密解密用同一算法。
  • Golang常用加密算法

    2019-10-22 17:49:49
    Golang常用加密算法 当我们希望数据不要直接呈现出其结果时我们会选择做加密处理,比如:用户账号的密码、手机号、身份证号等敏感信息通常都是经过加密处理后再写入数据库进行存储的,否则这些信息可能会被拦截而...
  • 常见加密算法分类

    千次阅读 2018-07-10 17:20:00
    常见加密算法分类 常见的加密算法可以分成三类,对称加密算法,非对称加密算法和Hash算法。 对称加密 指加密和解密使用相同密钥的加密算法。对称加密算法的优点在于加解密的高速度和使用长密钥时的难破解性。...
  • 常见加密算法原理及概念

    千次阅读 2018-12-22 16:20:17
    在安全领域,利用密钥加密算法来对通信的过程进行加密是一种常见的安全手段。利用该手段能够保障数据安全通信的三个目标: 1、数据的保密性,防止用户的数据被窃取或泄露 2、保证数据的完整性,防止用户传输的数据...
  • 前端常用加密算法

    2019-12-03 17:07:16
    MD5加密(无解密方法,解密不可逆) 适用场景: 用户注册完成后,将加密后的密码发送给后端,后端将加密后的密码存储在数据库中,当用户登录时,前端依然发送加密后的密码,后台对比数据库中存储的密码和前端发送的...
  • 网络通信常用加密算法研究

    千次阅读 2015-12-24 10:46:10
    对称加密采用了对称密码编码技术,它的特点是文件加密和解密使用相同的密钥,即加密密钥也可以用作解密密钥,这种方法在密码学中叫做对称加密算法,对称加密算法使用起来简单快捷,密钥较短,且破译困难,除了数据...
  • 嵌入式系统常用加密算法

    千次阅读 2017-11-02 09:56:45
    1,TEA加密 2,DH加密 3,DES加密 4,DES3加密
  • 几种常用加密算法简析与比较

    千次阅读 2018-04-24 17:29:38
    常用加密算法总体可以分为两类:单项加密和双向加密,双向加密又分为对称加密和非对称加密,因此主要分析下面三种加密算法:对称加密算法、非对称加密算法和单项加密算法(Hash算法)。1、对称加密算法(AES、DES...
  • 文章目录单向散列哈希算法md5DigestUtils(spring)实现md5对称加密算法base64BASE64(jdk自带)实现base64非对称加密算法(又称:公开密钥加密算法)对称加密和非对称加密的结合 单向散列哈希算法 MD5、SHA(128、256)...
  • 常见加密算法介绍及比较

    千次阅读 2019-07-31 10:39:59
    常见加密算法 常见的对称加密算法主要有DES、3DES、AES等,常见的非对称算法主要有RSA、DSA等,散列算法主要有SHA-1、MD5等。也有的地方将对称加密和非对称加密归类为双向加密,将散列算法归类为单向加密。 对称...
  • 目前常见加密算法简介

    千次阅读 2019-01-13 15:15:35
    艾伦·麦席森·图灵在二战期间主要负责破译德国人的密码系统... 后来甚至有人将二战胜利原因归咎于图灵机的诞生,虽然有些夸大,但图灵机的诞生确实加快了二战的结束这是不可否认的。而图灵机战胜的不是法西斯...
  • 常见加密算法

    2019-06-07 08:28:00
    常见加密算法可以分成三类:对称加密算法,非对称加密算法和Hash加密算法 对称加密算法的加密与解密 密钥相同 非对称加密算法的加密密钥与解密 密钥不同 Hash加密 不需要密钥,是一种单向算法 加密与解密 ...

空空如也

1 2 3 4 5 ... 20
收藏数 272,979
精华内容 109,191
关键字:

常见的加密方法