数据分析常用加密方式MD5、SHA256、RSA

数据测试与分析需要经常将用户的敏感信息加密,将原有的明文信息经过加密算法转换成不可读的字符串,从而达到加密的目的,常用的加密算法有MD5、SHA256、RSA等。

1.MD5、SHA256都是哈希算法,python中都来自hashlib包,主要是将一段字符串通过一定的加密算法转换成另一种字符串,因具有不可逆的特点,从而保证了数据的安全。

2.RSA是一种非对称加密算法,对极大整数做因数分解的难度决定了 RSA 算法的可靠性,假如有人找到一种快速因数分解的算法的话,那么用 RSA 加密的信息的可靠性就肯定会极度下降,目前看来找到这样的算法的可能性非常小。

MD5加密算法的Python举例:

# -*- coding: utf-8 -*-
import hashlib
import csv


class Md5Func:
    def __init__(self):
        pass

    @staticmethod
    def to_md5(target):
        m = hashlib.md5()
        m.update(target.encode('utf-8'))
        return m.hexdigest()

    def transfer_func(self, csv_reader, csv_writer):
        for row in csv_reader:
            row_list = list(row)
            if str(row[0]).find('name') > 0:
                row_list.append('id_md5')
                row_list.append('num_md5')
            else:
                row_list.append(self.to_md5(row[1]))
                row_list.append(self.to_md5(row[2]))
            csv_writer.writerow(row_list)
        return csv_writer

    def main(self, path_input, data):
        data_out = open((path_input + '/{name}_md5.csv').format(name=data.split('.')[0]), 'w', encoding='utf8',
                        newline='')
        csv_writer = csv.writer(data_out)
        data_in = open((path_input + '/{dataset}').format(dataset=data), encoding='utf-8')
        csv_reader = csv.reader(data_in)
        self.transfer_func(csv_reader, csv_writer)
        data_out.close()
        data_in.close()


if __name__ == '__main__':
    path_in = './'
    Md5Func().main(path_in, 'abc.csv')

结果展示
在这里插入图片描述

RSA加密算法举例:

# -*- coding:utf-8 -*-
import os
import rsa


class RsaFunc:
    def __init__(self):
        pass

    # 生成秘钥并保存
    @staticmethod
    def pub_privkey(n):
        (pubkey, privkey) = rsa.newkeys(n)
        file_path = os.path.split(os.path.realpath(__file__))[0] + '\\output'
        if not os.path.exists(file_path):
            os.mkdir(file_path)
        with open(file_path + '/public.pem', 'w+') as f:
            f.write(pubkey.save_pkcs1().decode())
        with open(file_path + '/private.pem', 'w+') as f:
            f.write(privkey.save_pkcs1().decode())
        return file_path

    # 导入公钥并加密得到密文
    def encode_rsa(self, info, n):
        file_path = self.pub_privkey(n)
        with open(file_path + '/public.pem', 'r') as f:
            pubkey = rsa.PublicKey.load_pkcs1(f.read().encode())
        crypto_text = rsa.encrypt(info.encode(), pubkey)
        return file_path, crypto_text

    # 导入私钥并解密得到明文
    @staticmethod
    def decode_rsa(file_path, crypto_text):
        with open(file_path + '/private.pem', 'r') as f:
            privkey = rsa.PrivateKey.load_pkcs1(f.read().encode())
        message = rsa.decrypt(crypto_text, privkey).decode()
        return message


if __name__ == '__main__':
    info_in = '张三'
    filepath, cp_text = RsaFunc().encode_rsa(info_in, 1024)
    ex_text = RsaFunc.decode_rsa(filepath, cp_text)
    

RSA结果截图展示:
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值