【问题标题】:Encrypt/Decrypt ECB/PKS5/Blowfish between AS3Crypto & Javax.Crypto fails with padding error在 AS3Crypto 和 Javax.Crypto 之间加密/解密 ECB/PKS5/Blowfish 失败并出现填充错误
【发布时间】:2010-10-26 13:11:45
【问题描述】:

我有一个作为文件发送给我的密钥,因此我可以使用 Blowfish 加密一些 xml 数据。如何访问密钥以便可以将其与 AS3Crypto 一起使用?我假设我需要使用 [Embed] 元标记嵌入它。它是 mimeType="application/octet-stream" 但我不确定这是否正确。如何嵌入,然后将此文件作为密钥引用?我正在加密的 xml 无法在 Java 端解密。每次尝试都失败并出现以下异常:

javax.crypto.BadPaddingException:给定最终块未正确填充。

作为奖励,如果有人有使用 lib 来处理 Java 实现的经验并且知道要使用的理想模式/填充/IV,那将是很棒的。谢谢!

//keyFile is an embedded asset. I was given a file to use as the key
var kdata:ByteArray = new keyFile() as ByteArray;

//Convert orderXML to Base64
var orderData:ByteArray = Base64.decodeToByteArray(String(orderXML));

//Cipher name   
var cname:String = "simple-blowfish-ecb";

var pad:IPad = new PKCS5;
var mode:ICipher = Crypto.getCipher(cname, kdata, pad);

//not sure if this is necessary. seems to be also set in mode
pad.setBlockSize(mode.getBlockSize());

mode.encrypt(orderData);

var transmitXML:String = Base64.encodeByteArray(orderData);

//DEBUG: Output to TextArea
storePanel.statusBox.text += "\n--TRANSMIT--\n"+transmitXML;

【问题讨论】:

    标签: java actionscript-3 encryption padding blowfish


    【解决方案1】:

    如果您仍然不确定如何嵌入二进制数据,不知道,但您使用 [Embed] 标记是对的(这当然是一种好方法)。

    我经常这样嵌入:

    [Embed(source="myKeyFile.key", mimeType="application/octet-stream")]
    private const _KeyFile:Class;
    private var keyFile:ByteArray = new _KeyFile();
    
    ...
    
    trace(keyFile.length + " bytes"); // XYZ bytes
    

    更多信息: http://dispatchevent.org/roger/embed-almost-anything-in-your-swf/

    【讨论】:

    • 这正是问题所在。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-22
    • 1970-01-01
    • 2012-11-22
    • 2018-12-23
    • 2017-12-10
    相关资源
    最近更新 更多