我正在测试解码 Base-64 数据,通过后台工作人员内部的
ApplicationDomain#domainMemory
高效地读取它:
override public function decode(): Array {
...
ApplicationDomain.currentDomain.domainMemory = task.input;
...
}
我注意到我收到了一个“文件结束”错误,正是从对
domainMemory
的分配中收到的,其中 task.input
是从主工作程序接收到的 16 个字节。
错误#1504:文件结束。
我已经测试了类似的
encode()
函数,它不会产生这样的错误。
通过运行脚本 run/test
来运行
https://github.com/agera-air/org.agera.crypto,并满足以下要求:
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");
});
}
}
}
问题是我从
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;
...
}