纯js 国密4 autojs可调用--自定义--_TextEncoder-----_TextDecoder

有需要联系:1034682998

需要重写Uint8Array.prototype.fill

Uint8Array.prototype.fill = function (value) {
  // Steps 1-2.
  if (this == null) {
    throw new TypeError('this is null or not defined');
  }

  var O = Object(this);

  // Steps 3-5.
  var len = O.length >>> 0;

  // Steps 6-7.
  var start = arguments[1];
  var relativeStart = start >> 0;

  // Step 8.
  var k = relativeStart < 0 ? Math.max(len + relativeStart, 0) : Math.min(relativeStart, len);

  // Steps 9-10.
  var end = arguments[2];
  var relativeEnd = end === undefined ? len : end >> 0;

  // Step 11.
  var final = relativeEnd < 0 ? Math.max(len + relativeEnd, 0) : Math.min(relativeEnd, len);

  // Step 12.
  while (k < final) {
    O[k] = value;
    k++;
  }

  // Step 13.
  return O;
}  ;
let originalBuffer = paddedBuffer.slice(0, paddedBuffer.length - paddingLength)
等同于
let originalBuffer = paddedBuffer.subarray(0, paddedBuffer.length - paddingLength)
Uint8Array.from([])
等同于
new Uint8Array([])
this.decryptRoundKeys = Uint32Array.from(this.encryptRoundKeys)
this.decryptRoundKeys.reverse()
等同于
let strBuffer = new Uint32Array(this.encryptRoundKeys)
let mstrBuffer = []
for (i = 0; i < strBuffer.length; i++)
  mstrBuffer[i] = strBuffer[i]
mstrBuffer.reverse()
this.decryptRoundKeys = new Uint32Array(mstrBuffer)

function _TextEncoder() { }
_TextEncoder.prototype.encode = function (s) {
  var data = unescape(encodeURIComponent(s)).split('').map(function (val) {
    return val.charCodeAt();
  });
  return typeof Uint8Array == "function" ? new Uint8Array(data) : data;
  //new TextEncoder().encode返回Uint8Array
}
  ;
function _TextDecoder() { }
_TextDecoder.prototype.decode = function (code_arr) {
  return decodeURIComponent(escape(String.fromCharCode.apply(null, code_arr)));
}
_TextDecoder使用时需要传数组过来--因此utf8ArrayBufferToString 需要改写
var utf8ArrayBufferToString = function (strBuffer) {
  let mstrBuffer = []
  for (i = 0; i < strBuffer.length; i++)
    mstrBuffer[i] = strBuffer[i]
  let decoder = new _TextDecoder('utf-8')
  return decoder.decode(mstrBuffer)
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: CA的生成和签发涉及到应用数据、签名和解CA是算法的证书颁发机构,负责颁发和管理数字证书,确保数据的安全性和可信度。 首先,生成CA需要遵循相关的标准和规范。证书颁发机构需要进行身份验证,确保其具备发放数字证书的资质和能力。生成CA时还需要选择合适的算法,如SM2、SM3和SM4等,以保证数据的加和签名安全。 生成CA后,可以开始应用数据的、签名和解。在使用算法进行加时,首先需要生成一对钥,包括一个公钥和一个私钥。公钥用于加数据,私钥用于解数据。通过使用SM2算法对数据进行加,可以保证数据的机性和安全性。 对数据进行签名时,需要使用私钥对数据进行加,并生成数字签名。通过使用SM2算法进行签名,可以确保签名的准确性和不可篡改性。签名后的数据可以与数字证书一起传播,用于证明数据的完整性和来源可靠性。 当接收方收到加或签名数据后,使用相应的公钥进行解或验证。使用SM2算法进行解和验证,可以保证数据的解正确性和签名的有效性。只有持有正确的私钥才能解数据,只有正确的公钥能够验证签名。 总之,CA的生成和签发涉及到应用数据的加、签名和解。通过使用算法,可以保证数据的机性、完整性和可信度。这些安全机制的应用使得数据传输和存储更加安全可靠。 ### 回答2: CA(中码局认证中心)是由中码局授权的可信机构,负责算法下的数字证书的生成和签发。算法是中自主研发的一种码算法,用于保护数据的加、签名和解CA首先会生成一个根证书,该证书包含了算法所需的公钥和私钥等信息。根证书的私钥需要妥善保管,以确保证书的安全性。 在使用CA生成证书时,首先需要生成证书请求CSR(Certificate Signing Request)。CSR包含了证书的一些基本信息,比如需签发的证书的名称、钥等。CSR由应用程序生成后,发送给CA。 CA收到CSR后,会对其进行验证,并使用根证书的私钥进行签名。签名后的证书会包含申请者的公钥以及其他相关信息,比如证书的有效期等。CA对签发的证书进行数字签名,以保证证书的真实性和完整性。 当应用程序需要进行数据的、签名或解时,首先需要将数据进行相应的处理,然后使用证书中包含的公钥进行加或签名操作。对于解操作,则需要使用证书中对应的私钥进行解CA的生成和签发过程保证了数字证书的可信和安全。应用程序可以通过使用算法下的证书实现数据的加、签名和解,确保数据的安全性和完整性。算法在内得到了广泛的应用和认可,对于保护数据的安全非常重要。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值