首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python Javascript CryptoJS

Python Javascript CryptoJS
EN

Stack Overflow用户
提问于 2017-09-08 05:04:19
回答 1查看 2.5K关注 0票数 0

我正在寻找一个模块,我可以在python和javascript中使用,这样就可以在python中加密一些东西,然后在javascript中解密,如果我传入一个密钥(反之亦然)。

到目前为止,我已经检查了SlowAES和CryptoJS,但找不到任何好的文档或示例。有人能帮上忙吗?

下面是我尝试让它工作的方法:

JS:

代码语言:javascript
复制
var encoded_message = 'MTAxMTEyMTMxNDE1MTYxN2asfw3LtCtoL+mvWtJsIVSVCsvZdBIvZWWRuKEI85nd';
var my_iv = CryptoJS.enc.Base64.parse('1011121314151617');
var my_key = CryptoJS.enc.Base64.parse('824601be6c2941fabe7fe256d4d5a2b7');

console.log('my iv [' + my_iv + ']');
console.log('my key [' + my_key + ']');
console.log('my enc message [' + encoded_message + ']');

var data = CryptoJS.AES.decrypt(encoded_message, my_key, { iv: my_iv, mode: CryptoJS.mode.CBC });
console.log(data);
var dec = CryptoJS.enc.Hex.stringify(data);
console.log('data [' + dec + ']');


var encoded_message = CryptoJS.enc.Base64.parse('MTAxMTEyMTMxNDE1MTYxN2asfw3LtCtoL+mvWtJsIVSVCsvZdBIvZWWRuKEI85nd');
console.log('\n\n\n');
console.log('message [' + encoded_message + ']');

Python:

代码语言:javascript
复制
import os, random, struct
from Crypto.Cipher import AES
from Crypto import Random
import base64
class AESCipher:
    def __init__(self, key):
        BS = 16
        self.pad = lambda s: s + (BS - len(s) % BS) * chr(BS - len(s) % BS)
        self.unpad = lambda s : s[0:-ord(s[-1])]
        self.key = self.pad(key[0:16])

    def encrypt(self, raw):
        raw = self.pad(raw)
        iv = "1011121314151617"
        cipher = AES.new(self.key, AES.MODE_CBC, iv)
        return base64.b64encode(iv + cipher.encrypt(raw))

    def decrypt(self, enc):
        enc = enc.replace(' ', '+')
        enc = base64.b64decode(enc)
        iv = enc[:16]
        cipher = AES.new(self.key, AES.MODE_CBC, iv)
        return self.unpad(cipher.decrypt(enc[16:]))


def main():     

    message = 'this is my new message'
    print message[:16]

    cipher = AESCipher('824601be6c2941fabe7fe256d4d5a2b7')
    encrypteddata = cipher.encrypt('work you bloody thing!')
    print encrypteddata         

    decryptdata =cipher.decrypt(encrypteddata)
    print decryptdata 

main()
EN

回答 1

Stack Overflow用户

发布于 2017-09-08 05:10:59

我最近一直在Javascript中使用sjcl。http://bitwiseshiftleft.github.io/sjcl/

它们似乎也是python兼容的版本。https://pypi.python.org/pypi/sjcl

在最简单的情况下,你可以只做->

代码语言:javascript
复制
sjcl.encrypt("password", "data")

代码语言:javascript
复制
sjcl.decrypt("password", "encrypted-data")

但是你仍然可以用它来做一些低级的事情。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46105070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档