pycrypto를 사용하여 Python에서 일부 JS (SJCL 라이브러리를 사용)를 다시 작성하려고합니다. 나는 내 문제는 암호가 아니라 방법은 라이브러리가 fromBits 변환을 처리하는 다음 코드Python에서 SJCL .frombits 구현
aes = new sjcl.cipher.aes(this.key);
bits = sjcl.codec.utf8String.toBits(text);
cipher = sjcl.mode.ccm.encrypt(aes, bits, iv);
cipherIV = sjcl.bitArray.concat(iv, cipher);
return sjcl.codec.base64.fromBits(cipherIV);
을 구현하는 방법을 알아내는 데 문제가 있어요. SJCL의 문서에 따르면
는우리의 암호 프리미티브의 대부분은 내부적으로 4 바이트 단어의 배열에서 작동하지만, 그들 중 많은 사람들이 4 바이트의 배수가 아닌 인수를 취할 수 있습니다. 이 라이브러리는 32 비트 워드의 배열로 비트 배열 (8 비트의 배수 일 필요는 없음)을 인코딩합니다. 비트는 빅 엔디 언으로 한 번에 32 비트 씩 단어 배열로 압축됩니다. 단어는 배정 밀도 부동 소수점 숫자이므로 몇 가지 추가 데이터에 적합합니다. 우리는 이것을 (개인적으로, 아마도 변화하는 방식으로) 사용하여 배열의 마지막 단어에 실제로 존재하는 비트의 수를 인코딩합니다.
이 비트 배열에 그 변환을 암시하는 것 같다 나에게
내가 CONCAT 작업 중 보급 될 것입니다 걱정 추가 정보는 어떤 종류의에 추가합니다. 또한, concat 후에 결과는 base64 문자열로 반환됩니다. 나는 이것을 복제하기위한 적절한 'struct'패킹 매개 변수를 확신하지 못합니다.