加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

每字节Python字节XOR解密

发布时间:2020-12-20 11:13:42 所属栏目:Python 来源:网络整理
导读:我有一个VBE程序的XOR加密文件,使用此函数进行加密: Public Class Crypter ... 'This Will convert String to bytes,then call the other function. Public Function Crypt(ByVal Data As String) As String Return Encoding.Default.GetString(Crypt(Encod
我有一个VBE程序的XOR加密文件,使用此函数进行加密:

Public Class Crypter
    ...
    'This Will convert String to bytes,then call the other function.
    Public Function Crypt(ByVal Data As String) As String
        Return Encoding.Default.GetString(Crypt(Encoding.Default.GetBytes(Data)))
    End Function

    'This calls XorCrypt giving Key converted to bytes
    Public Function Crypt(ByVal Data() As Byte) As Byte()
        Return XorCrypt(Data,Encoding.Default.GetBytes(Me.Key))
    End Function

    'Xor Encryption.
    Private Function XorCrypt(ByVal Data() As Byte,ByVal Key() As Byte) As Byte()
        Dim i As Integer
        If Key.Length <> 0 Then
            For i = 0 To Data.Length - 1
                Data(i) = Data(i) Xor Key(i Mod Key.Length)
            Next
        End If
        Return Data
    End Function
End Class

并以这种方式保存:

Dim Crypter As New Cryptic(Key)
'open destination file
Dim objWriter As New StreamWriter(fileName)
'write crypted content
objWriter.Write(Crypter.Crypt(data))

现在我必须用Python重新打开文件,但我遇到了单个字节的麻烦,这是python中的XOR函数:

def crypto(self,data):
    'crypto(self,data) -> str'
    return ''.join(chr((ord(x) ^ ord(y)) % 256) 
        for (x,y) in izip(data.decode('utf-8'),cycle(self.key))

我不得不添加%256,因为有时x是> 256即不是单个字节.

传递两个字节的东西不会破坏解密,因为密钥与以下数据保持“配对”.

问题是转换中的某些解密字符是错误的.
这些字符都是重音字母,如à,è,ì,但只是一些整体重音字母.其他都正确恢复.

我想这可能是由于256 mod但没有它我当然会得到一个chr异常……

感谢您的支持

解决方法

确实,以下行是错误的:

Return Encoding.Default.GetString(Crypt(Encoding.Default.GetBytes(Data)))

没有一般保证从Crypt返回的字节有效解码为字符串.你最好使用Convert.ToBase64String,然后将该字符串传递给你的Python代码(显然,你需要能够对字节进行Base-64解码).

正如其他人所指出的那样,XORing提供的安全级别足以保护您的数据,可能还有您的小妹妹.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读