import Crypto.Cipher.DES
import struct
def rol32(x, y):
ret = ((x<<y)&0xFFFFFFFF)|((x>>(32-y))&0xFFFFFFFF)
#print 'rol32', hex(x), hex(y), hex(ret)
return ret
def sub32(x, y):
ret = (x & 0xFFFFFFFF) - (y & 0xFFFFFFFF)
if ret < 0: ret += 0x100000000
#print 'sub32', hex(x), hex(y), hex(ret)
return ret
def mul32(x, y):
ret = (x * y) & 0xFFFFFFFF
#print 'mul32', x, y
return ret
d = Crypto.Cipher.DES.new('\xcd\x67\x98\xf2\xa4\xb6\x70\x76', Crypto.Cipher.DES.MODE_ECB)
def decrypt(offset, f):
out_buf = []
b = f.read(16)
buf = d.decrypt(b)
buf = buf[8:] + buf[:8]
for i in range(0,4):
val = struct.unpack('<I', buf[i*4:i*4+4])[0]
val = sub32((sub32(0x8927462, mul32(offset, 0x3210789B))^rol32(val, offset % 32)), 0x12345678)
tmp = struct.pack('<I', val)
out_buf.append(ord(tmp[0]))
out_buf.append(ord(tmp[1]))
out_buf.append(ord(tmp[2]))
out_buf.append(ord(tmp[3]))
for i in range(len(out_buf)-1,len(out_buf)-16,-1):
out_buf[i] ^= out_buf[i-1]
out_buf[len(out_buf)-16] ^= (offset & 0xFF)^((offset >> 14) & 0xFF)
return out_buf
0
A
Répondre
0
Non. Ce n'est certainement pas en mode CTR. Il ressemble à un disc encryption mode. En particulier, le mode de cryptage a une légère ressemblance avec LRW. L'idée principale est de modifier l'entrée en fonction du numéro de bloc, de sorte que le chiffrement du même bloc plusieurs fois n'aboutisse pas au même texte chiffré. Il permet de re-crypter un message partiellement, mais un attaquant remarquera, quelles parties du texte en clair change.
Par conséquent, il y a une petite fuite d'informations. Comme je ne vois pas non plus d'authentification, je ne pense pas que j'aime ce mode de cryptage.
Questions connexes
- 1. projet du noyau des chiffrement
- 2. Chiffrement des données HTTP POST
- 3. Chiffrement des mots de passe
- 4. Le chiffrement de web.config est-il inutile?
- 5. Stockage des clés de chiffrement - meilleures pratiques?
- 6. Chiffrement des sections personnalisées d'un fichier web.config
- 7. Le chiffrement garantit-il l'intégrité?
- 8. Chiffrement des clés de produit: chiffrement à clé publique et privée
- 9. chiffrement intérieur oracle
- 10. Chiffrement Flash & C#
- 11. Chiffrement simple dans JSP
- 12. réutilisation keypair d'authentification pour chiffrement et le déchiffrement des données
- 13. Chiffrement SERVER utilisant FIFO
- 14. chiffrement et déchiffrement
- 15. Liaisons WCF client/Liaison des éléments pour le chiffrement
- 16. Chiffrement et décryptage C#
- 17. Suite de chiffrement WCF TLS
- 18. Android 2.1: Chiffrement Bluetooth
- 19. VIM: Clé de chiffrement
- 20. Chiffrement RSA sur l'iPhone
- 21. Chiffrement TEA avec C#
- 22. Quel algorithme de chiffrement est le meilleur pour chiffrer le fichier de session sur le serveur?
- 23. Chiffrement MD5 à Blowfish?
- 24. Chiffrement de paquet UDP
- 25. Mon chiffrement d'authentification est-il bon?
- 26. WCF, certificats auto-signés pour le chiffrement
- 27. chiffrement en php
- 28. chiffrement avec python
- 29. Meilleures pratiques pour le chiffrement MySQL?
- 30. chiffrement basé Signataire
merci, cela a du sens. – meeuw