【游客模式】——注册会员,加入11RIA 闪客社区吧!一起见证Flash的再次辉煌……
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 TKCB 于 2020-2-24 19:29 编辑
As3 Crypto是用Actionscript 3编写的密码术库,提供了几种常用算法。此版本还引入了TLS引擎(TLS通常称为SSL。)
协议:TLS 1.0支持(部分)
证书:X.509证书解析和验证,内置的根CA。
公钥加密:RSA(加密/解密,签名/验证)
密钥加密:AES,DES,3DES,BlowFish,XTEA,RC4
机密模式:ECB,CBC,CFB,CFB8,OFB,CTR
散列算法:MD2,MD5,SHA-1,SHA-224,SHA-256
可用的填充:PKCS#5,PKCS#1类型1和2
其他有用的东西:HMAC,随机,TLS-PRF,一些ASN-1 / DER解析
演示
例子
[Actionscript3] 纯文本查看 复制代码 package {
import com.hurlant.crypto.symmetric.DESKey;
import com.hurlant.crypto.symmetric.ECBMode;
import com.hurlant.util.Base64;
import flash.display.Sprite;
import flash.utils.ByteArray;
/**
* Author:大飞狼
* Date: 2014-6-19 上午9:30:12
* Synopsis:des加解密测试
*/
public class Main extends Sprite {
/**
* key顾名思义就是加解密用的钥匙
*/
private const KEY_STR: String = "123123";
public function Main() {
var b_ba: ByteArray = encrypt(KEY_STR, "www.dafeilang.com");
//字符串形式的密文
var b_ciphertext: String = Base64.encodeByteArray(b_ba);
trace("密文:", b_ciphertext);
var b_ciphertext16: String = byteArrayTo16(b_ba);
trace("十六进制形式密文:", b_ciphertext16);
//解密后的原文
var b_originalText: String = decrypt(KEY_STR, Base64.decodeToByteArray(b_ciphertext));
trace("解密得到:", b_originalText);
//解密16进制密文后的原文
var b_originalText16: String = decrypt(KEY_STR, from16ToByteArray(b_ciphertext16));
trace("解密十六进制密文得到:", b_originalText16);
}
/**
* 加密
* @param key 加解密用的key
* @param data 被加密的字符串
* @return 加密后生成ByteArray数据
*/
private function encrypt(key: String, data: String): ByteArray {
trace("执行加密方法,key:", key, ",被加密的字符串:", data);
//实验化key的Bytearray对象,给DESKey使用
var b_keyByteArray: ByteArray = new ByteArray();
b_keyByteArray.writeUTFBytes(key);
//实例化DESKey
var b_desKey: DESKey = new DESKey(b_keyByteArray);
//不只是有ecb还有cbc,cfb等,有兴趣可以自己尝试
var b_ecb: ECBMode = new ECBMode(b_desKey);
//把需要加密字符串转换为ByteArray
var b_byteArray: ByteArray = convertStringToByteArray(data);
//执行加密
b_ecb.encrypt(b_byteArray);
return b_byteArray;
}
/**
* 解密
* @param key 解密用的key
* @param data 需要解密的数据
* @return 解密后的数据
*/
private function decrypt(key: String, data: ByteArray): String {
trace("\n执行解密方法,key:", key, ",需要解密的字符串:", data);
//实验化key的Bytearray对象,给DESKey使用
var b_keyByteArray: ByteArray = new ByteArray();
b_keyByteArray.writeUTFBytes(key);
//实例化DESKey
var b_desKey: DESKey = new DESKey(b_keyByteArray);
//
var b_ecb: ECBMode = new ECBMode(b_desKey);
var b_byteArray: ByteArray = new ByteArray();
b_byteArray.writeBytes(data);
//执行解密
b_ecb.decrypt(b_byteArray);
return convertByteArrayToString(b_byteArray);
}
/**
* String转ByteArray
* @param str
* @return
*/
public function convertStringToByteArray(str: String): ByteArray {
var bytes: ByteArray;
if (str) {
bytes = new ByteArray();
bytes.writeUTFBytes(str);
}
return bytes;
}
/**
* ByteArray转String
* @param bytes
* @return
*/
public function convertByteArrayToString(bytes: ByteArray): String {
var str: String;
if (bytes) {
bytes.position = 0;
str = bytes.readUTFBytes(bytes.length);
}
return str;
}
/**
* 把ByteArray转换为16进制的形式的字符串
* @param ba
* @param name
* @return
*/
private function byteArrayTo16(ba: ByteArray): String {
ba.position = 0;
var b_str: String = "";
while (ba.bytesAvailable > 0) {
var b_s: String = ba.readUnsignedByte().toString(16);
// trace("b_s:",b_s);
if (b_s.length < 2) b_s = "0" + b_s;
b_str += b_s;
}
return b_str;
}
private function from16ToByteArray(str: String): ByteArray {
var b_ba: ByteArray = new ByteArray();
var b_arr: Array = str.split("");
var b_length: int = b_arr.length;
for (var i: int = 0; i < b_length - 1; i += 2) {
var b_char1: String = b_arr[i];
var b_char2: String = b_arr[i + 1];
var b_byte: int = parseInt(b_char1 + b_char2, 16);
// trace("b_byte:",b_byte);
b_ba.writeByte(b_byte);
}
return b_ba;
}
}
}
as3crypto.zip
(431.27 KB, 下载次数: 28, 售价: 10 银子)
|