Пример #1
0
    def test_pkcs8(self):
        privkey = '''-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDBVAczL3sjEVewm0+XWo/g1QbqM9veVKmETH37CqJrTB/TEg9t
/HyRtPCUCnx6sj0xyQPTBRrKZn4D69zqNiRwBOPza6E8QhmUPTtRam4nFbUMj7n7
97gcrUpT2GSdA94Ags3xB0ucCHi/nWEZyfUxGZjb6L3+3NgPoCQknwoV8wIDAQAB
AoGAZ/g1qwxU76YK/7p20lHs4KAQCPH8w5PKWpD8i37LnGKjFtM2oxLPN1kUrLj6
+s1SZazSNrEfGEyIZrl45Chb7UcZu2B8ZNve7LpZAPrhkGXv48OJioTsVGYpBEYG
viTcrBKHfNT9XfkDwSNR9y4mPDf92vpUYboNox9IcFESzPECQQDf9PDsDnd7zgzZ
CGDCnWeVqS/+nEZtZckTlrzsajj/9UmvnvUgHS/o6eQZQPTroB74FMujLL9HShNI
F75Mm+7LAkEA3P06ZW009rqvKf3g1E6sHEQvOp7rCD3grLbVSQ8Y9wogYDTZqON8
VvrmawIBHfMkdlLCcU/+QsrWajIZkMOoeQJAHHSb0/J2ngVtPnpBCRlE2xA3J+ul
SysepF2HvaY1fdglt6nDzYPH3ZkyQT8un22l4bGKuj3qQ92Wm5dgt40shwJBALJT
sgzo3EWBjhovoX8RYTeKGiaO2RCUhjo5a9GB2l53kHqyCzaLI+o4mzmcq3QUocbN
r9SqfX4+mlmlxhWYndkCQQCuA/8YrkMrQIZWlErBRldtV1gqoToyexsJjxAuLP0d
XM5dHfZ/oq/dqXCUN/iMRG1qxaA7qT4kYb+n6Nb3JYxG
-----END RSA PRIVATE KEY-----'''
        pubkey = '''-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDBVAczL3sjEVewm0+XWo/g1Qbq
M9veVKmETH37CqJrTB/TEg9t/HyRtPCUCnx6sj0xyQPTBRrKZn4D69zqNiRwBOPz
a6E8QhmUPTtRam4nFbUMj7n797gcrUpT2GSdA94Ags3xB0ucCHi/nWEZyfUxGZjb
6L3+3NgPoCQknwoV8wIDAQAB
-----END PUBLIC KEY-----'''
        self.assertEqual(b'test',
                         RSADecrypt(privkey, RSAEncrypt(pubkey, 'test')))
        self.assertEqual(
            b'test',
            RSADecrypt(privkey.encode("utf-8"),
                       RSAEncrypt(pubkey.encode("utf-8"), 'test')))
Пример #2
0
    def test_RSA(self):
        plaintext = "Message"
        ciphertext = RSAEncrypt(pubkey, plaintext)
        self.assertEqual(plaintext.encode("utf-8"),
                         RSADecrypt(privkey, ciphertext))

        # 执行go程序
        fp = os.popen('go run %s/RSA-PKCS1-PEM/rsa-pkcs1.go' %
                      self.examplespath)
        godata = fp.read()
        fp.close()
        godata = dict([i.split(": ") for i in godata.split("\n") if i])
        self.assertEqual(godata['rsa decrypted'], plaintext)
        self.assertEqual(RSADecrypt(privkey, godata['rsa encrypt base64']),
                         plaintext.encode("utf-8"))

        # 执行php程序
        fp = os.popen('php %s/RSA-PKCS1-PEM/rsa-pkcs1.php' % self.examplespath)
        phpdata = fp.read()
        fp.close()
        phpdata = phpdata.split("\n")
        phpdata = phpdata[phpdata.index("public key encrypt:"):]
        self.assertEqual(phpdata[3], plaintext)
        self.assertEqual(RSADecrypt(privkey, phpdata[1]),
                         plaintext.encode("utf-8"))
Пример #3
0
 def test_generate_rsa_keys_with_pass(self):
     passphrase = b"abcde"
     (pub, pri) = generate_rsa_keys(incall=True,
                                    length=1024,
                                    passphrase=passphrase)
     text = b"Hello World!"
     self.assertEqual(
         RSADecrypt(pri, RSAEncrypt(pub, text), passphrase=passphrase),
         text)
Пример #4
0
def index():
    if "GET" == request.method:
        return render_template("AES-RSA-BS.html", pubkey=pubkey)
    elif "POST" == request.method:
        res = dict(code=1, msg=None)
        username = request.form.get("username")
        password = request.form.get("password")
        # decrypt
        try:
            password_ret = RSADecrypt(privkey, password)
        except Exception as e:
            res.update(msg=str(e))
        else:
            app.logger.debug("username:"******"\n" + "password:"******"\n" + "encryped password: "******"admin" and password_ret and password_ret == "admin":
                res.update(code=0, password=password_ret)
            else:
                res.update(msg="username or password is not match")
        return jsonify(res)
Пример #5
0
 def process_request(self, request):
     # if request.path != '/api/serverPublicKey':
     if request.method == 'POST':
         #获取header里边加密的aes key
         encrypted_aeskey = request.META.get('HTTP_KEY')
         #解密aes key
         client_aeskey = RSADecrypt(settings.ServerPrivKey,
                                    encrypted_aeskey)
         if client_aeskey == 'ERROR':
             res = {"status": "5001", "msg": "公钥过期,请从新尝试"}
             return JsonResponse(res)
         #把request.body里边的数据从bytes转成字符串
         data_str = str(request.body, encoding='utf8')
         #字符串变字典
         data_dict = ast.literal_eval(data_str)
         #取data的值解密
         data_dict['data'] = ast.literal_eval(
             AESDecrypt(client_aeskey, data_dict['data']))
         #解密后的数据转化回bytes赋值request.decryped_data
         request._body = data_dict
         request.aeskey = client_aeskey
Пример #6
0
 def test_generate_rsa_keys(self):
     (pub, pri) = generate_rsa_keys(incall=True)
     text = b"helloWorld"
     self.assertEqual(RSADecrypt(pri, RSAEncrypt(pub, text)), text)
Пример #7
0
 def test_RSA(self):
     plaintext = b"Message"
     ciphertext = RSAEncrypt(pubkey, plaintext)
     to_decrypt = RSADecrypt(privkey, ciphertext)
     self.assertEqual(plaintext, to_decrypt)