栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

密码学实验

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

密码学实验

文章目录
  • 效果
  • 代码

效果

代码
import numpy as np

dic_alpah2index = {}
# 字母 <=> 数字的映射
def intial_alpha_index():
    index_dic = list(range(26))
    np.random.shuffle(index_dic)
    dic0 = {}
    dic1 = {}
    for i in range(26):
        dic0[chr(97+i)] = index_dic[i]
        dic1[index_dic[i]] = chr(97+i)
    
    return [dic0, dic1]

# 创建映射矩阵
def intial_key_matrix(seed=1234,key_matrix_size=(3,3)):
    key_matrix = np.array([[6,24,1],[13,16,10],[20,17,15]])
    key_matrix_inv = np.array([[8,5,10],[21,8,21],[21,12,8]])
    return [key_matrix, key_matrix_inv]

# 加密
def encrypt(m, key_matrix, alpha_index, padding):
    arr_m = trans_str2arr(m, key_matrix.shape[0], alpha_index[0], padding)
    arr_c = (key_matrix @ arr_m) % 26
    return trans_arr2str(arr_c, alpha_index[1])

# 解密
def decrypt(c, key_matrix, alpha_index, padding):
    return encrypt(c, key_matrix, alpha_index, padding)

# 字符串转np.array
def trans_str2arr(s, height, alpha2index, padding):
    lt_s = list(''.join(filter(str.isalpha, s.lower())))
    lt_s.extend([padding]*(0 if len(lt_s)%height==0 else height-len(lt_s)%height))
    func = lambda x:alpha2index[x]
    index_lt = list(map(func,lt_s))
    return np.array(index_lt).reshape(height, int(len(index_lt)/height))

# np.array.float转字符串
def trans_arr2str(arr, index2alpha):
    arr.astype(np.int32)
    arr = arr.reshape(1, arr.shape[0]*arr.shape[1])
    func = lambda x:index2alpha[x]
    return ''.join(list(map(func,arr[0])))

if __name__ == '__main__':
    # 用作填充的字符
    padding = 'x'
    
    # 字母数字映射表
    dic0 = intial_alpha_index()
    
    # 密钥矩阵
    key_matrix = intial_key_matrix()
    
    # 明文
    m = 'you're just like an angel'
    
    # 加密
    c = encrypt(m, key_matrix[0], dic0, padding)
    
    # 解密
    m_ = decrypt(c, key_matrix[1], dic0, padding)
    print(f'原始明文:{m}')
    print(f'加密密文:{c}')
    print(f'解密明文:{m_}')
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/971610.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号