首页 / PYTHON / 每字节Python字节XOR解密
每字节Python字节XOR解密
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了每字节Python字节XOR解密,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1726字,纯文字阅读大概需要3分钟。
内容图文
![每字节Python字节XOR解密](/upload/InfoBanner/zyjiaocheng/742/164383486d004b8e812a8a1c41723942.jpg)
我有一个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提供的安全级别足以保护您的数据,可能还有您的小妹妹.
内容总结
以上是互联网集市为您收集整理的每字节Python字节XOR解密全部内容,希望文章能够帮你解决每字节Python字节XOR解密所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。