我想用adobe air加密和decrpyt文件。我用代码成功加密文件。但我还没有解密加密文件,请帮助我,我该怎么办?
我正在使用此代码进行加密:
import com.hurlant.crypto.symmetric.AESKey;
import com.hurlant.crypto.symmetric.DESKey;
import com.hurlant.util.Hex;
import flash.filesystem.FileStream;
import flash.filesystem.File;
import flash.utils.ByteArray;
import flash.filesystem.FileMode;
import flash.display.BitmapData;
import flash.display.Bitmap;
import com.hurlant.util.ArrayUtil;
stop();
var stream:FileStream;
var stream2:FileStream;
var file:File;
var fileToEncrypt:ByteArray;
encrypt();
function encrypt():void
{
file = File.applicationDirectory.resolvePath("logo_markatalog.png");
fileToEncrypt = new ByteArray;
stream = new FileStream();
stream.open( file, FileMode.READ );
stream.readBytes(fileToEncrypt);
stream.close();
var appDir:String = File.applicationDirectory.nativePath;
//file = File(appDir+"logo_markatalog_enc.png");
file = new File(appDir+"/logo_markatalog_enc.png");
var key:ByteArray = Hex.toArray("635232557");
var aes:AESKey = new AESKey(key);
aes.encrypt(fileToEncrypt);
stream2 = new FileStream();
stream2.open( file, FileMode.WRITE );
stream2.writeBytes(fileToEncrypt);
stream2.close();
}
答案 0 :(得分:1)
我不能告诉你你做错了什么,但是我可以给你用来加密对象到文件中并解密它们的东西。
someKey var是用于加密和解密的密钥。
theFileWithEncryptedObject var是我在第一个代码部分中保存加密对象的文件,我从中读取第二个代码部分中的加密对象。
我在密钥上使用md5哈希,这不是必需的。
以下是使用hurlant.crypto将对象加密到文件的方式:
var fileStream:FileStream = new FileStream();
fileStream.open(theFileWithEncryptedObject, FileMode.WRITE);
var bytes:ByteArray = new ByteArray();
bytes.writeObject(theObjectToEncrypt);
var key:ByteArray = Hex.toArray(someKey);
var md5:MD5 = new MD5();
key = md5.hash(key);
var pad:IPad = new PKCS5();
var aes:ICipher = Crypto.getCipher("simple-aes-128-cbc", key, pad);
pad.setBlockSize(aes.getBlockSize());
aes.encrypt(bytes);
fileStream.writeBytes(bytes);
fileStream.close();
在这里我如何解密并从文件中取回我的对象:
var bytes:ByteArray = new ByteArray();
var fileStream:FileStream = new FileStream();
fileStream.open(theFileWithEncryptedObject, FileMode.READ);
fileStream.readBytes(bytes);
fileStream.close();
var key:ByteArray = Hex.toArray(someKey);
var md5:MD5 = new MD5();
key = md5.hash(key);
var pad:IPad = new PKCS5;
var aes:ICipher = Crypto.getCipher("simple-aes-128-cbc", key, pad);
pad.setBlockSize(aes.getBlockSize());
aes.decrypt(bytes);
var theObjectDecrypted:Object;
bytes.position = 0;
theObjectDecrypted = bytes.readObject();
希望这有帮助。