1

i want to encrypt and decrpyt files with adobe air. and i am successfully encrypt files with code. but i dont yet decrpyt an encrypted file please help me, what can i do?

i am using this code for encrypt:

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();
}
4

1 に答える 1

1

あなたが何を間違っているのかはわかりませんが、オブジェクトをファイルに暗号化し、それらを復号化するために使用するものを提供できます。

someKey var は、暗号化と復号化に使用されるキーです。

theFileWithEncryptedObject var は、最初のコード部分で暗号化されたオブジェクトを保存するファイルであり、そこから 2 番目のコード部分で暗号化されたオブジェクトを読み取ります。

キーに 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();

お役に立てれば。

于 2013-02-12T17:20:42.453 に答える