签名、验签、加密、解密
目录
des加解密
python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import pyDes import base64 def decrypt(text, key="1234567890123456"): cryptor = pyDes.triple_des(key, padmode=pyDes.PAD_PKCS5) x = base64.standard_b64decode(text.encode()) x = cryptor.decrypt(x) return x.decode() def encrypt(text, key="1234567890123456"): cryptor = pyDes.triple_des(key, padmode=pyDes.PAD_PKCS5) x = cryptor.encrypt(text) x = base64.standard_b64encode(x) return x.decode() |
nodejs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
enDES3(text, key = '1234567890123456') { const l = CryptoJS.enc.Utf8.parse(text); const e = CryptoJS.enc.Utf8.parse(key); const a = CryptoJS.TripleDES.encrypt(l, e, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7, }); return a.toString(); } deDES3(text, key = '1234567890123456') { try { const e = CryptoJS.enc.Utf8.parse(key); const a = CryptoJS.TripleDES.decrypt(text, e, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }); return CryptoJS.enc.Utf8.stringify(a).toString() } catch (e) { return null } } |
rsa签名
python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
from OpenSSL import crypto from Crypto.PublicKey import RSA from Crypto.Hash import SHA from Crypto.Signature import PKCS1_v1_5 as Signature_pkcs1_v1_5 import base64 def signature(msg, pfx_key): rsakey = RSA.import_key(open(pfx_key, "rb").read()) signer = Signature_pkcs1_v1_5.new(rsakey) digest = SHA.new() digest.update(msg.encode("utf8")) sign = signer.sign(digest) signature = base64.b64encode(sign) return signature.decode() def verify(msg, signature, cert_key): rsakey = RSA.import_key(open(cert_key, "rb").read()) verifier = Signature_pkcs1_v1_5.new(rsakey) digest = SHA.new() digest.update(msg.encode("utf8")) is_verify = verifier.verify(digest, base64.b64decode(signature)) return is_verify |
nodejs
1 2 3 4 5 6 7 8 9 10 11 12 13 |
const forge = require('node-forge'); verify (ca_cert, data, sign) { try { cont publickey = forge.pki.certificateFromPem(ca_cert) const publicKey = this.ca_cert.publicKey let md = forge.md.sha1.create(); md.update(data, 'utf8'); return publicKey.verify(md.digest().bytes(), atob(sign)) } catch (e) { return false } } |
x509证书验证
python
1 2 3 4 5 6 7 8 9 10 11 12 13 |
from OpenSSL import crypto def verifyCertChain(ca_pem): try: ca_cert = crypto.load_certificate(crypto.FILETYPE_PEM, base64.b64decode(ca_pem)) client_cert = crypto.load_certificate(crypto.FILETYPE_PEM, base64.b64decode(ca_pem)) store = crypto.X509Store() store.add_cert(ca_cert) ctx = crypto.X509StoreContext(store, client_cert) ctx.verify_certificate() return True except: return False |
nodejs
1 2 3 4 5 6 7 8 9 10 11 12 |
const forge = require('node-forge'); verifyCertChain (ca_pem) { try { const ca_cert = forge.pki.certificateFromPem(ca_pem)) let caStore = forge.pki.createCaStore() caStore.addCertificate(this.ca_cert) return forge.pki.verifyCertificateChain(caStore, [this.server_cert]) } catch (e) { return false } } |
rsa加解密
python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
from OpenSSL import crypto from Crypto.PublicKey import RSA from Crypto.Cipher import PKCS1_v1_5 from Crypto import Random import base64 def decrypt(private_key): rsakey = RSA.import_key(private_key) cipher = PKCS1_v1_5.new(rsakey) block_size = Random.new().read de_code_data = cipher.decrypt(base64.b64decode(msg), block_size) return de_code_data.decode('utf8') def encrypt(cert_pem): rsakey = RSA.import_key(cert_pem) cipher = PKCS1_v1_5.new(rsakey) cipher_text = base64.b64encode(cipher.encrypt(msg.encode())) return cipher_text |
nodejs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
const forge = require('node-forge'); encrypt(key, server_cert_pem) { const server_cert = forge.pki.certificateFromPem(server_cert_pem) const publicKey = server_cert.publicKey const encrypted = publicKey.encrypt(key, 'RSAES-PKCS1-V1_5'); return btoa(encrypted) } decrypt (text, private_key) { try { const client_key = forge.pki.privateKeyFromPem(private_key) return client_key.decrypt(text) } catch (e) { return null } } |
hmac
python
1 2 3 4 |
import hmac h = hmac.new('123456', 'hello'.encode('utf8'), digestmod='sha1') h.hexdigest() |
nodejs
1 2 3 4 5 6 |
const forge = require('node-forge'); let hmac = forge.hmac.create() hmac.start('sha1', '123456'); hmac.update('hello'); return hmac.digest().toHex() |