我有一個VB.net程序使用此功能,以爭奪一個XOR encypted文件:Python的字節
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文件,但我有麻煩越來越單字節,這是蟒蛇的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國防部,但沒有它,當然我得到一個CHR例外...
感謝您的支持
我希望你實際上並沒有期望從這裏得到實際的安全性 – 2010-05-10 21:56:01
我需要的只是獲得積分數據,我得到文件炒這種方式,安全性是不是我的責任。 – neurino 2010-05-11 08:56:58