`
chirking
  • 浏览: 36259 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

python实现DES加密算法

阅读更多

初学python,写了个网络安全课的作业--DES。欢迎拍砖~

ps。试试测试驱动开发,还真有点不习惯...

 

代码有两段,前面是实现,后面是测试框架。为什么都说全是测试代码呢,我无语。

 

#coding=utf-8
from functools import partial

class DES(object):
    """
    DES加密算法
    interface: input_key(s, base=10), encode(s), decode(s)
    """
    __ip = [
        58,50,42,34,26,18,10,2,60,52,44,36,28,20,12,4,
        62,54,46,38,30,22,14,6,64,56,48,40,32,24,16,8,
        57,49,41,33,25,17, 9,1,59,51,43,35,27,19,11,3,
        61,53,45,37,29,21,13,5,63,55,47,39,31,23,15,7,
    ]
    __ip1 = [
        40,8,48,16,56,24,64,32,39,7,47,15,55,23,63,31,
        38,6,46,14,54,22,62,30,37,5,45,13,53,21,61,29,
        36,4,44,12,52,20,60,28,35,3,43,11,51,19,59,27,
        34,2,42,10,50,18,58,26,33,1,41, 9,49,17,57,25,
    ]
    __e = [
        32, 1, 2, 3, 4, 5,
        4 , 5, 6, 7, 8, 9,
        8 , 9,10,11,12,13,
        12,13,14,15,16,17,
        16,17,18,19,20,21,
        20,21,22,23,24,25,
        24,25,26,27,28,29,
        28,29,30,31,32, 1,
    ]
    __p = [
        16, 7,20,21,29,12,28,17,
        1 ,15,23,26, 5,18,31,10,
        2 ,8 ,24,14,32,27, 3, 9,
        19,13,30, 6,22,11, 4,25,
    ]
    __s = [
        [
        0xe,0x4,0xd,0x1,0x2,0xf,0xb,0x8,0x3,0xa,0x6,0xc,0x5,0x9,0x0,0x7,
        0x0,0xf,0x7,0x4,0xe,0x2,0xd,0x1,0xa,0x6,0xc,0xb,0x9,0x5,0x3,0x8,
        0x4,0x1,0xe,0x8,0xd,0x6,0x2,0xb,0xf,0xc,0x9,0x7,0x3,0xa,0x5,0x0,
        0xf,0xc,0x8,0x2,0x4,0x9,0x1,0x7,0x5,0xb,0x3,0xe,0xa,0x0,0x6,0xd,
        ],
        [
        0xf,0x1,0x8,0xe,0x6,0xb,0x3,0x4,0x9,0x7,0x2,0xd,0xc,0x0,0x5,0xa,
        0x3,0xd,0x4,0x7,0xf,0x2,0x8,0xe,0xc,0x0,0x1,0xa,0x6,0x9,0xb,0x5,
        0x0,0xe,0x7,0xb,0xa,0x4,0xd,0x1,0x5,0x8,0xc,0x6,0x9,0x3,0x2,0xf,
        0xd,0x8,0xa,0x1,0x3,0xf,0x4,0x2,0xb,0x6,0x7,0xc,0x0,0x5,0xe,0x9,
        ],
        [
        0xa,0x0,0x9,0xe,0x6,0x3,0xf,0x5,0x1,0xd,0xc,0x7,0xb,0x4,0x2,0x8,
        0xd,0x7,0x0,0x9,0x3,0x4,0x6,0xa,0x2,0x8,0x5,0xe,0xc,0xb,0xf,0x1,
        0xd,0x6,0x4,0x9,0x8,0xf,0x3,0x0,0xb,0x1,0x2,0xc,0x5,0xa,0xe,0x7,
        0x1,0xa,0xd,0x0,0x6,0x9,0x8,0x7,0x4,0xf,0xe,0x3,0xb,0x5,0x2,0xc,
        ],
        [
        0x7,0xd,0xe,0x3,0x0,0x6,0x9,0xa,0x1,0x2,0x8,0x5,0xb,0xc,0x4,0xf,
        0xd,0x8,0xb,0x5,0x6,0xf,0x0,0x3,0x4,0x7,0x2,0xc,0x1,0xa,0xe,0x9,
        0xa,0x6,0x9,0x0,0xc,0xb,0x7,0xd,0xf,0x1,0x3,0xe,0x5,0x2,0x8,0x4,
        0x3,0xf,0x0,0x6,0xa,0x1,0xd,0x8,0x9,0x4,0x5,0xb,0xc,0x7,0x2,0xe,
        ],
        [
        0x2,0xc,0x4,0x1,0x7,0xa,0xb,0x6,0x8,0x5,0x3,0xf,0xd,0x0,0xe,0x9,
        0xe,0xb,0x2,0xc,0x4,0x7,0xd,0x1,0x5,0x0,0xf,0xa,0x3,0x9,0x8,0x6,
        0x4,0x2,0x1,0xb,0xa,0xd,0x7,0x8,0xf,0x9,0xc,0x5,0x6,0x3,0x0,0xe,
        0xb,0x8,0xc,0x7,0x1,0xe,0x2,0xd,0x6,0xf,0x0,0x9,0xa,0x4,0x5,0x3,
        ],
        [
        0xc,0x1,0xa,0xf,0x9,0x2,0x6,0x8,0x0,0xd,0x3,0x4,0xe,0x7,0x5,0xb,
        0xa,0xf,0x4,0x2,0x7,0xc,0x9,0x5,0x6,0x1,0xd,0xe,0x0,0xb,0x3,0x8,
        0x9,0xe,0xf,0x5,0x2,0x8,0xc,0x3,0x7,0x0,0x4,0xa,0x1,0xd,0xb,0x6,
        0x4,0x3,0x2,0xc,0x9,0x5,0xf,0xa,0xb,0xe,0x1,0x7,0x6,0x0,0x8,0xd,
        ],
        [
        0x4,0xb,0x2,0xe,0xf,0x0,0x8,0xd,0x3,0xc,0x9,0x7,0x5,0xa,0x6,0x1,
        0xd,0x0,0xb,0x7,0x4,0x9,0x1,0xa,0xe,0x3,0x5,0xc,0x2,0xf,0x8,0x6,
        0x1,0x4,0xb,0xd,0xc,0x3,0x7,0xe,0xa,0xf,0x6,0x8,0x0,0x5,0x9,0x2,
        0x6,0xb,0xd,0x8,0x1,0x4,0xa,0x7,0x9,0x5,0x0,0xf,0xe,0x2,0x3,0xc,
        ],
        [
        0xd,0x2,0x8,0x4,0x6,0xf,0xb,0x1,0xa,0x9,0x3,0xe,0x5,0x0,0xc,0x7,
        0x1,0xf,0xd,0x8,0xa,0x3,0x7,0x4,0xc,0x5,0x6,0xb,0x0,0xe,0x9,0x2,
        0x7,0xb,0x4,0x1,0x9,0xc,0xe,0x2,0x0,0x6,0xa,0xd,0xf,0x3,0x5,0x8,
        0x2,0x1,0xe,0x7,0x4,0xa,0x8,0xd,0xf,0xc,0x9,0x0,0x3,0x5,0x6,0xb,
        ],
    ]
    __k1 = [
        57,49,41,33,25,17, 9,
        1 ,58,50,42,34,26,18,
        10, 2,59,51,43,35,27,
        19,11, 3,60,52,44,36,
        63,55,47,39,31,23,15,
        7 ,62,54,46,38,30,22,
        14, 6,61,53,45,37,29,
        21,13, 5,28,20,12, 4,
    ]
    __k2 = [
        14,17,11,24, 1, 5, 3,28,
        15, 6,21,10,23,19,12, 4,
        26, 8,16, 7,27,20,13, 2,
        41,52,31,37,47,55,30,40,
        51,45,33,48,44,49,39,56,
        34,53,46,42,50,36,29,32,
    ]
    __k0 = [
        1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1,
    ]
    __hex_bin = {
        '0':'0000','1':'0001','2':'0010','3':'0011',
        '4':'0100','5':'0101','6':'0110','7':'0111',
        '8':'1000','9':'1001','a':'1010','b':'1011',
        'c':'1100','d':'1101','e':'1110','f':'1111',
        ' ':'0000'
    }

    __re = lambda t, s: ''.join(s[i-1] for i in t)

    __IP = partial(__re, __ip)
    __IP1 = partial(__re, __ip1)
    __E = partial(__re, __e)
    __P = partial(__re, __p)
    __K1 = partial(__re, __k1)
    __K2 = partial(__re, __k2)

    __B = partial( lambda hex_bin, s: ''.join(hex_bin[w]
        for w in ''.join('%2x' % ord(w) for w in s))
        , __hex_bin)
    __DB = partial( lambda s: ''.join(chr(int(s[i:i+8], 2)) for i in range(0, len(s), 8)))
    __S = partial( lambda hex_bin, __s, s: ''.join(hex_bin['%x' % __s[i][
        int(s[i*6]+s[i*6+5], 2)*16 + int(s[i*6+1:i*6+5], 2)]] for i in range(8))
        , __hex_bin, __s)
    __F = partial( lambda s, k: ''.join('0' if s[i]==k[i] else '1' for i in range(len(s))))
    __K0 = partial( lambda k0, K2, k: map(K2,
        (k[k0[i]:28]+k[0:k0[i]] + k[k0[i]+28:56]+k[28:k0[i]+28] for i in range(16)))
        , __k0, __K2)
    __K = partial( lambda K1, K0, k: K0(K1(k))
        , __K1, __K0)

    def __init__(self):
        pass

    def input_key(self, key, base=10):
        if base == 2:
            pass
        elif base == 16:
            key = ''.join(self.__class__.__hex_bin[w] for w in key)
        else:
            key = self.__class__.__B(key)
        self.__k = self.__class__.__K(key)

    def __code(self, s, k):
        s = self.__IP(s)
        l, r = s[0:32], s[32:64]
        for i in range(16):
            r_t = r
            r = self.__E(r)
            r = self.__F(r, k[i])
            r = self.__S(r)
            r = self.__P(r)
            r = self.__F(r, l)
            l = r_t
        return self.__class__.__IP1(r+l)

    def encode(self, s):
        a = ''
        s += ' ' * ((8-len(s)%8)%8)
        for i in range(0, len(s), 8):
            before = self.__class__.__B(s[i:i+8])
            after = self.__code(before, self.__k)
            a += '%16x' % int(after, 2)
        return ''.join(w if w!=' ' else '0' for w in a)

    def decode(self, s):
        a = ''
        s.lower()
        for i in range(0, len(s), 16):
            before = ''.join(self.__class__.__hex_bin[s[j]] for j in range(i, i+16))
            after = self.__code(before, self.__k[::-1])
            a += self.__class__.__DB(after)
        return a.rstrip()


if __name__ == '__main__':
    d = DES()
    d.input_key('密码8位!')
    s = '这是原文\n'
    a = d.encode(s)
    print a
    b = d.decode(a)
    print b
 
#coding=utf-8
import unittest
from des import DES

class KnownValues(unittest.TestCase):
    """"""
    __known_values = (('12345678','ABC我们大家','388a9c61849462e20af277ffe6891072'),
            )

    def test_encode(self):
        des = DES()
        for key, before, after in self.__known_values:
            des.input_key(key)
            result = des.encode(before)
            self.assertEqual(after, result)

    def test_decode(self):
        des = DES()
        for key, after, before in self.__known_values:
            des.input_key(key)
            result = des.decode(before)
            self.assertEqual(after, result)

class BadInput(unittest.TestCase):
    """"""
    __key_inputs = (
            )
    def test_input_key(self):
        des = DES()
        self.assertRaises(IndexError, des.input_key, '1234567', 10)
        self.assertRaises(IndexError, des.input_key, '123我阿, 4567', 2)
        self.assertRaises(KeyError, des.input_key, '123我哦哦哦, 4567', 16)

    def test_encode(self):
        pass

    def test_decode(self):
        des = DES()
        self.assertRaises(KeyError, des.decode, '123我哦哦哦, 4567')

class SanityCheck(unittest.TestCase):
    """"""
    """"""
    __encode_inputs = (('asfd我 ','的萨sa1'),
            )
    __decode_inputs = (('12345678','388a9c61849462e20af277ffe6891072'),
            )

    def test_encode(self):
        des = DES()
        for key, before in self.__encode_inputs:
            des.input_key(key)
            after = des.encode(before)
            result = des.decode(after)
            self.assertEqual(before, result)

    def test_decode(self):
        des = DES()
        for key, before in self.__decode_inputs:
            des.input_key(key)
            after = des.decode(before)
            result = des.encode(after)
            self.assertEqual(before, result)

if __name__ == '__main__':
    unittest.main()
分享到:
评论
9 楼 魔力猫咪 2009-07-12  
找到毛病了。IE运行脚本太慢,提示可能失去响应的时候停止了脚本。抱歉。
不过为什么后来的部分停止脚本可以看到,第一贴的就不成了呢???
8 楼 chirking 2009-07-12  
<div class="quote_title">魔力猫咪 写道</div>
<div class="quote_div">
<div class="quote_title">chirking 写道</div>
<div class="quote_div">
<div class="quote_title">魔力猫咪 写道</div>
<div class="quote_div">全是测试代码。这个DES类的实现代码根本没写出来。</div>
<br>代码有2段,前面的就是DES实现。。。我晕啊</div>
<br>根本没有DES类的代码呀。定义的类都是继承自unittest.TestCase。一看就是单元测试。<br>别告诉我des = DES()就是全部代码。</div>
<p> </p>
<p>我都无语了。DES类难道你看不到?</p>
<p> </p>
<pre name="code" class="python">#coding=utf-8
from functools import partial

class DES(object):
    """
    DES加密算法
    interface: input_key(s, base=10), encode(s), decode(s)
    """
    __ip = [
        58,50,42,34,26,18,10,2,60,52,44,36,28,20,12,4,
        62,54,46,38,30,22,14,6,64,56,48,40,32,24,16,8,
        57,49,41,33,25,17, 9,1,59,51,43,35,27,19,11,3,
        61,53,45,37,29,21,13,5,63,55,47,39,31,23,15,7,
    ]
    __ip1 = [
        40,8,48,16,56,24,64,32,39,7,47,15,55,23,63,31,
        38,6,46,14,54,22,62,30,37,5,45,13,53,21,61,29,
        36,4,44,12,52,20,60,28,35,3,43,11,51,19,59,27,
        34,2,42,10,50,18,58,26,33,1,41, 9,49,17,57,25,
    ]
    __e = [
        32, 1, 2, 3, 4, 5,
        4 , 5, 6, 7, 8, 9,
        8 , 9,10,11,12,13,
        12,13,14,15,16,17,
        16,17,18,19,20,21,
        20,21,22,23,24,25,
        24,25,26,27,28,29,
        28,29,30,31,32, 1,
    ]
    __p = [
        16, 7,20,21,29,12,28,17,
        1 ,15,23,26, 5,18,31,10,
        2 ,8 ,24,14,32,27, 3, 9,
        19,13,30, 6,22,11, 4,25,
    ]
    __s = [
        [
        0xe,0x4,0xd,0x1,0x2,0xf,0xb,0x8,0x3,0xa,0x6,0xc,0x5,0x9,0x0,0x7,
        0x0,0xf,0x7,0x4,0xe,0x2,0xd,0x1,0xa,0x6,0xc,0xb,0x9,0x5,0x3,0x8,
        0x4,0x1,0xe,0x8,0xd,0x6,0x2,0xb,0xf,0xc,0x9,0x7,0x3,0xa,0x5,0x0,
        0xf,0xc,0x8,0x2,0x4,0x9,0x1,0x7,0x5,0xb,0x3,0xe,0xa,0x0,0x6,0xd,
        ],
        [
        0xf,0x1,0x8,0xe,0x6,0xb,0x3,0x4,0x9,0x7,0x2,0xd,0xc,0x0,0x5,0xa,
        0x3,0xd,0x4,0x7,0xf,0x2,0x8,0xe,0xc,0x0,0x1,0xa,0x6,0x9,0xb,0x5,
        0x0,0xe,0x7,0xb,0xa,0x4,0xd,0x1,0x5,0x8,0xc,0x6,0x9,0x3,0x2,0xf,
        0xd,0x8,0xa,0x1,0x3,0xf,0x4,0x2,0xb,0x6,0x7,0xc,0x0,0x5,0xe,0x9,
        ],
        [
        0xa,0x0,0x9,0xe,0x6,0x3,0xf,0x5,0x1,0xd,0xc,0x7,0xb,0x4,0x2,0x8,
        0xd,0x7,0x0,0x9,0x3,0x4,0x6,0xa,0x2,0x8,0x5,0xe,0xc,0xb,0xf,0x1,
        0xd,0x6,0x4,0x9,0x8,0xf,0x3,0x0,0xb,0x1,0x2,0xc,0x5,0xa,0xe,0x7,
        0x1,0xa,0xd,0x0,0x6,0x9,0x8,0x7,0x4,0xf,0xe,0x3,0xb,0x5,0x2,0xc,
        ],
        [
        0x7,0xd,0xe,0x3,0x0,0x6,0x9,0xa,0x1,0x2,0x8,0x5,0xb,0xc,0x4,0xf,
        0xd,0x8,0xb,0x5,0x6,0xf,0x0,0x3,0x4,0x7,0x2,0xc,0x1,0xa,0xe,0x9,
        0xa,0x6,0x9,0x0,0xc,0xb,0x7,0xd,0xf,0x1,0x3,0xe,0x5,0x2,0x8,0x4,
        0x3,0xf,0x0,0x6,0xa,0x1,0xd,0x8,0x9,0x4,0x5,0xb,0xc,0x7,0x2,0xe,
        ],
        [
        0x2,0xc,0x4,0x1,0x7,0xa,0xb,0x6,0x8,0x5,0x3,0xf,0xd,0x0,0xe,0x9,
        0xe,0xb,0x2,0xc,0x4,0x7,0xd,0x1,0x5,0x0,0xf,0xa,0x3,0x9,0x8,0x6,
        0x4,0x2,0x1,0xb,0xa,0xd,0x7,0x8,0xf,0x9,0xc,0x5,0x6,0x3,0x0,0xe,
        0xb,0x8,0xc,0x7,0x1,0xe,0x2,0xd,0x6,0xf,0x0,0x9,0xa,0x4,0x5,0x3,
        ],
        [
        0xc,0x1,0xa,0xf,0x9,0x2,0x6,0x8,0x0,0xd,0x3,0x4,0xe,0x7,0x5,0xb,
        0xa,0xf,0x4,0x2,0x7,0xc,0x9,0x5,0x6,0x1,0xd,0xe,0x0,0xb,0x3,0x8,
        0x9,0xe,0xf,0x5,0x2,0x8,0xc,0x3,0x7,0x0,0x4,0xa,0x1,0xd,0xb,0x6,
        0x4,0x3,0x2,0xc,0x9,0x5,0xf,0xa,0xb,0xe,0x1,0x7,0x6,0x0,0x8,0xd,
        ],
        [
        0x4,0xb,0x2,0xe,0xf,0x0,0x8,0xd,0x3,0xc,0x9,0x7,0x5,0xa,0x6,0x1,
        0xd,0x0,0xb,0x7,0x4,0x9,0x1,0xa,0xe,0x3,0x5,0xc,0x2,0xf,0x8,0x6,
        0x1,0x4,0xb,0xd,0xc,0x3,0x7,0xe,0xa,0xf,0x6,0x8,0x0,0x5,0x9,0x2,
        0x6,0xb,0xd,0x8,0x1,0x4,0xa,0x7,0x9,0x5,0x0,0xf,0xe,0x2,0x3,0xc,
        ],
        [
        0xd,0x2,0x8,0x4,0x6,0xf,0xb,0x1,0xa,0x9,0x3,0xe,0x5,0x0,0xc,0x7,
        0x1,0xf,0xd,0x8,0xa,0x3,0x7,0x4,0xc,0x5,0x6,0xb,0x0,0xe,0x9,0x2,
        0x7,0xb,0x4,0x1,0x9,0xc,0xe,0x2,0x0,0x6,0xa,0xd,0xf,0x3,0x5,0x8,
        0x2,0x1,0xe,0x7,0x4,0xa,0x8,0xd,0xf,0xc,0x9,0x0,0x3,0x5,0x6,0xb,
        ],
    ]
    __k1 = [
        57,49,41,33,25,17, 9,
        1 ,58,50,42,34,26,18,
        10, 2,59,51,43,35,27,
        19,11, 3,60,52,44,36,
        63,55,47,39,31,23,15,
        7 ,62,54,46,38,30,22,
        14, 6,61,53,45,37,29,
        21,13, 5,28,20,12, 4,
    ]
    __k2 = [
        14,17,11,24, 1, 5, 3,28,
        15, 6,21,10,23,19,12, 4,
        26, 8,16, 7,27,20,13, 2,
        41,52,31,37,47,55,30,40,
        51,45,33,48,44,49,39,56,
        34,53,46,42,50,36,29,32,
    ]
    __k0 = [
        1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1,
    ]
    __hex_bin = {
        '0':'0000','1':'0001','2':'0010','3':'0011',
        '4':'0100','5':'0101','6':'0110','7':'0111',
        '8':'1000','9':'1001','a':'1010','b':'1011',
        'c':'1100','d':'1101','e':'1110','f':'1111',
        ' ':'0000'
    }

    __re = lambda t, s: ''.join(s[i-1] for i in t)

    __IP = partial(__re, __ip)
    __IP1 = partial(__re, __ip1)
    __E = partial(__re, __e)
    __P = partial(__re, __p)
    __K1 = partial(__re, __k1)
    __K2 = partial(__re, __k2)

    __B = partial( lambda hex_bin, s: ''.join(hex_bin[w]
        for w in ''.join('%2x' % ord(w) for w in s))
        , __hex_bin)
    __DB = partial( lambda s: ''.join(chr(int(s[i:i+8], 2)) for i in range(0, len(s),))
    __S = partial( lambda hex_bin, __s, s: ''.join(hex_bin['%x' % __s[i][
        int(s[i*6]+s[i*6+5], 2)*16 + int(s[i*6+1:i*6+5], 2)]] for i in range(8))
        , __hex_bin, __s)
    __F = partial( lambda s, k: ''.join('0' if s[i]==k[i] else '1' for i in range(len(s))))
    __K0 = partial( lambda k0, K2, k: map(K2,
        (k[k0[i]:28]+k[0:k0[i]] + k[k0[i]+28:56]+k[28:k0[i]+28] for i in range(16)))
        , __k0, __K2)
    __K = partial( lambda K1, K0, k: K0(K1(k))
        , __K1, __K0)

    def __init__(self):
        pass

    def input_key(self, key, base=10):
        if base == 2:
            pass
        elif base == 16:
            key = ''.join(self.__class__.__hex_bin[w] for w in key)
        else:
            key = self.__class__.__B(key)
        self.__k = self.__class__.__K(key)

    def __code(self, s, k):
        s = self.__IP(s)
        l, r = s[0:32], s[32:64]
        for i in range(16):
            r_t = r
            r = self.__E(r)
            r = self.__F(r, k[i])
            r = self.__S(r)
            r = self.__P(r)
            r = self.__F(r, l)
            l = r_t
        return self.__class__.__IP1(r+l)

    def encode(self, s):
        a = ''
        s += ' ' * ((8-len(s)%8)%8)
        for i in range(0, len(s),:
            before = self.__class__.__B(s[i:i+8])
            after = self.__code(before, self.__k)
            a += '%16x' % int(after, 2)
        return ''.join(w if w!=' ' else '0' for w in a)

    def decode(self, s):
        a = ''
        s.lower()
        for i in range(0, len(s), 16):
            before = ''.join(self.__class__.__hex_bin[s[j]] for j in range(i, i+16))
            after = self.__code(before, self.__k[::-1])
            a += self.__class__.__DB(after)
        return a.rstrip()</pre>
 
<p> </p>
7 楼 魔力猫咪 2009-07-11  
chirking 写道
魔力猫咪 写道
全是测试代码。这个DES类的实现代码根本没写出来。

代码有2段,前面的就是DES实现。。。我晕啊

根本没有DES类的代码呀。定义的类都是继承自unittest.TestCase。一看就是单元测试。
别告诉我des = DES()就是全部代码。
6 楼 chirking 2009-07-11  
魔力猫咪 写道
全是测试代码。这个DES类的实现代码根本没写出来。

代码有2段,前面的就是DES实现。。。我晕啊
5 楼 魔力猫咪 2009-07-11  
全是测试代码。这个DES类的实现代码根本没写出来。
4 楼 chirking 2009-07-08  
<div class="quote_title">香克斯 写道</div>
<div class="quote_div">关键不是你的测试代码吧?<br>题目是:实现DES算法<br>这个代码呢?</div>
<p> </p>
<p>不是有2段代码的么。。。上面的是实现,下面的是测试框架</p>
<p> </p>
3 楼 chirking 2009-07-08  
<div class="quote_title">liangguanhui 写道</div>
<div class="quote_div">不是有个pyDES的开源项目吗?</div>
<p>网络安全课的作业,总不能直接交开源项目的代码吧。。。</p>
<p> </p>
2 楼 香克斯 2009-07-08  
关键不是你的测试代码吧?
题目是:实现DES算法
这个代码呢?
1 楼 liangguanhui 2009-07-08  
不是有个pyDES的开源项目吗?

相关推荐

    精选_基于Python实现的DES加密算法_源码打包

    基于Python实现的DES加密算法

    python之des加密算法

    根据提供的文件信息,本文将重点介绍Python中的DES加密算法,并简要提及MD5加密算法。同时,文中还将涉及Python中的图形界面编程库Tkinter的基本用法。以下是对这些知识点的详细解析。 ### 一、Python中的DES加密...

    python实现对称加密中3DES算法工程文件

    python实现对称加密中3DES算法工程文件 详解博客地址:https://blog.csdn.net/m0_52316372/article/details/125691581

    python实现的DES加密算法和3DES加密算法实例

    本文实例讲述了python实现的DES加密算法和3DES加密算法。分享给大家供大家参考。具体实现方法如下: ############################################################################# # Documentation # #########...

    基于Python的DES加密算法实现与示例

    使用场景及目标:适合作为入门资料来理解和探索DES数据加密算法的工作方式及其内部运行机制;同时也可用于教授学生关于位运算、函数实现以及基本密码体制的构建等基础知识。 其他说明:由于DE算法已被认为不再适合...

    DES加密python源码

    本篇将详细讲解DES加密算法的基本原理,以及如何通过Python代码实现这个过程。 首先,DES算法基于Feistel结构,它将一个64位的数据块分成左半部分L和右半部分R,然后通过一系列的迭代过程(16轮)进行加密。每轮...

    python如何实现DES加密

    Python 实现 DES 加密是一种常见的密码学操作,用于保护数据的安全。DES(Data Encryption Standard)是一种块加密算法,它使用了一种称为 Feistel 结构...尽管如此,学习DES加密有助于理解加密原理和加密算法的设计。

    des加密算法事例 des加密算法事例

    在学习和实践中,你可以使用各种编程语言实现DES加密算法,例如Java、Python、C++等。这些实现通常包括密钥的生成、数据的加解密以及密钥的管理等功能。在实际应用中,由于DES的安全性问题,通常会采用3DES(Triple ...

    基于python的对称加密算法des

    总之,基于Python的DES加密算法提供了一种简单而直观的方式来实现数据的加密和解密。然而,为了保障数据安全,我们应该遵循最佳实践,选择更为现代和安全的加密技术,例如AES,并且始终关注加密安全的最新发展,以...

    简明DES加密算法实现.docx

    简明 DES 加密算法实现 DES 加密算法是一种经典的对称加密算法,由美国国家标准与技术研究院(NIST)于 1977 年公布,广泛应用于商业和政府领域。该算法将明文按照 64 位分组,每个分组独立加密,输出 64 位密文。...

    python实现对称加密中3DES与AES算法工程文件

    python实现对称加密中3DES与AES算法工程文件 详解博客地址:https://blog.csdn.net/m0_52316372/article/details/125691581

    密码学实验_对称加密算法DES_非对称加密算法RSA.pdf

    本实验报告主要涉及两种加密算法:对称加密算法DES(Data Encryption Standard)和非对称加密算法RSA。实验旨在帮助学生深入理解这两种算法的基本原理,并通过Python编程实现加密和解密过程。 ### **对称加密算法...

    Python基于DES算法加密解密实例

    主要介绍了Python基于DES算法加密解密实现方法,以实例形式分析了DES算法实现加密解密的相关技巧,需要的朋友可以参考下

    基于python的des算法企业用户数据安全软件源码数据库论文.docx

    然后,论文讨论了如何使用Python语言实现DES算法对企业用户数据进行加密保护,并讲解了如何使用Python语言实现DES算法的详细过程。 本论文的主要贡献是提供了一种基于Python的DES算法企业用户数据安全软件源码...

    DES算法实现python(含图形化界面)

    2. 利用DES源代码实现下面功能: 1. 给定某个Sbox的输入差分情况下,计算所有输入对和所有Sbox输出差分的分布情况 2. 统计DES算法在密钥固定情况,输入明文改变1位、2位,。。。64位时。输出密文位数改变情况。 3...

    DES加密算法实验报告

    通过本次实验,学生不仅能够深入了解DES加密算法的基本原理,还能亲自动手编写代码实现加密解密过程,这对于加深理论知识的理解、提高实践能力具有重要意义。此外,通过对DES算法的学习,还可以引申探讨现代加密技术...

    银联系统DES加密算法

    总结起来,"银联系统DES加密算法"涉及到的是一个基于DES算法的加密机制,用于保障通信数据的安全。由于DES的局限性,现在更多地采用更安全的加密标准,如AES(高级加密标准),但在理解加密原理和历史发展时,DES...

    基于python的des算法企业用户数据安全软件设计与实现.docx

    DES算法是一种对称加密算法,使用该算法可以对数据进行加密,从而保护企业用户的个人信息不被泄露。 在本文档中,我们将详细介绍DES算法的原理和实现过程,并讨论基于Python的DES算法企业用户数据安全软件设计与...

    python实现简单的加密通信

    首先,PyCrypto是一个包含了大量加密算法的Python库,包括对称加密(如AES、DES)、非对称加密(RSA、DSA)、哈希函数(MD5、SHA)等。在我们的案例中,我们将重点讨论对称加密,因为它是加密通信中最基础且高效的...

Global site tag (gtag.js) - Google Analytics