如何使用adobe air加密和解密文件? (加密好,但尚未解密)

时间:2012-11-10 01:06:15

标签: air encryption

我想用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();
}

1 个答案:

答案 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();

希望这有帮助。