У нас есть приложение flex и приложение ANgular, я делаю шифрование для поля значения пароля, но оно не шифруется, как ожидалось.Сервисный код одинаков как для flex, так и для ANgular.
Мои ожидания - я хочу зашифровать строку 'aa'
, чтобы получить 3528
в качестве зашифрованного значения.Звучит странно, что это требование.Позвольте мне пояснить это подробнее.
У меня есть метод шифрования, который принимает строку и ключ, а затем возвращает закодированное значение, как упомянуто выше.
let str1 = 'aa';
let pass1 = this._encryptionService.encryptedEncodedString(str1, this.key);
console.log("pass1 correct value should be for aa is 3528 - ", pass1);
result in console is W3Q= but i need 3528
Мой код Angular / javascript для метода encryptedEncodedString -
constructor() {
this.Base64 = require('hi-base64');
this.key = 'some value';
this.hgDsl = "some value";
}
byteXor(source, key) {
var result = new Array(source.length);
var iLength = source.length;
var iKeyLength = key.length;
for (var i = 0; i < iLength; i++) {
result[i] = (source[i] ^ key.charCodeAt(i % iKeyLength));
}
return result;
}
encryptUI(content, key) {
var byteRetValue = bytesConversionUtil.convertStringToBytes(content);
byteRetValue = this.byteXor(byteRetValue, this.hgDsl);
byteRetValue = this.byteXor(byteRetValue, key.toLowerCase());
console.log("encryptUI byteRetValue ", byteRetValue);
return byteRetValue;
}
encryptedEncodedString(password, key){ // in flex they are using this
var encryptedPasswordByteArr = this.encryptUI(password, key);
var encryptedPasswordStr = bytesConversionUtil.convertBytesToString(encryptedPasswordByteArr);
console.log("encryptedPasswordStr ", encryptedPasswordStr);
var encodedPassword = this.Base64.encode(encryptedPasswordStr);
return encodedPassword;
}
После этого я получаю закодированное значение как - W3Q=
, как я могу преобразовать это, так что я получу3528
что ожидается.Я попытался сделать utf8 base 64 кодирования, а затем ASCII кодирование, но не повезло.
Пожалуйста, помогите, если я что-то сделаю.