问题设置域内存

问题描述 投票:0回答:1

我正在测试解码 Base-64 数据,通过后台工作人员内部的

ApplicationDomain#domainMemory
高效地读取它:

override public function decode(): Array {
    ...
    ApplicationDomain.currentDomain.domainMemory = task.input;
    ...
}

我注意到我收到了一个“文件结束”错误,正是从对

domainMemory
的分配中收到的,其中
task.input
是从主工作程序接收到的 16 个字节。

错误#1504:文件结束。

我已经测试了类似的

encode()
函数,它不会产生这样的错误。

MCVE

通过运行脚本 run/test 来运行

https://github.com/agera-air/org.agera.crypto
,并满足以下要求:

  • Node.js
  • asconfigc
package {
    import flash.display.Sprite;
    import org.agera.crypto.*;
    import org.agera.util.*;

    public class Main extends Sprite {
        public function Main() {
            encrypt("Some string", EncryptionFormat.BASE_64)
                .then(function(data: String): void {
                    assertEquals(data, "U29tZSBzdHJpbmc=");
                    trace("Base-64 encryption .. OK");
                })
                .otherwise(function(error: Error): void {
                    trace("Base-64 encryption .. ERROR");
                });
            decrypt("U29tZSBzdHJpbmc=", EncryptionFormat.BASE_64)
                .then(function(data: String): void {
                    assertEquals(data, "Some string");
                    trace("Base-64 decryption .. OK");
                })
                .otherwise(function(error: Error): void {
                    trace(error.message);
                    trace("Base-64 decryption .. ERROR");
                });
        }
    }
}
actionscript-3 actionscript air
1个回答
0
投票

问题是我从

by.blooddy.crypto
密码学库复制算法代码时代码中的一个小拼写错误:

packages/org.agera.crypto.worker/src/org/agera/crypto/worker/formats/Base64.as
中,更改为

override public function decode(): Array {
    ...
    if (memory.length < ApplicationDomain.MIN_DOMAIN_MEMORY_LENGTH) {
        memory.length = ApplicationDomain.MIN_DOMAIN_MEMORY_LENGTH;
    }

    ApplicationDomain.currentDomain.domainMemory = task.input;
    ...
}

到...

override public function decode(): Array {
    ...
    if (memory.length < ApplicationDomain.MIN_DOMAIN_MEMORY_LENGTH) {
        memory.length = ApplicationDomain.MIN_DOMAIN_MEMORY_LENGTH;
    }

    ApplicationDomain.currentDomain.domainMemory = memory;
    ...
}
© www.soinside.com 2019 - 2024. All rights reserved.