探秘凯撒密码:从基础到扩展思考

需积分: 9 0 下载量 142 浏览量 更新于2024-06-28 收藏 1.13MB PPTX 举报
"探秘凯撒密码,尹兰,贵州师范大学,加密技术,ASCII码,程序案例,扩展思考,汉字加密" 凯撒密码是一种古老的加密技术,由古罗马君主朱利叶斯·凯撒所使用,因此得名。它的基本原理是通过将明文中的每个字母按照一个固定数量的位置向右(或向左)平移,形成密文。例如,如果移动3位,那么字母"A"将变为"D","B"变为"E",以此类推。这种加密方式非常直观,但也相当容易被破解,因为对于熟练的观察者来说,它只涉及到字母表的一个简单循环移位。 描述中的例子展示了如何对字母和数字进行凯撒加密和解密。例如,"HELLOWORLD"在凯撒加密下移动3位后变成了"KHOORZRUOG"。同时,还提到了一个小学六年级的习题,其中涉及到了数字编码和模3运算,这可以被视为一种简单的非字母字符的加密方式。 ASCII码是英文字符和数字的主要编码方式,它使用7位二进制数来表示128个不同的字符,包括大小写字母、数字、标点符号和一些控制字符。例如,"c"的ASCII码是1100011,"a"是1100001,"t"是1110100。在计算机中,ASCII码是信息交换的基础,尤其是在早期的文本处理和通信中。 程序案例部分提到了使用ord()函数和chr()函数进行字符与ASCII码之间的转换。ord()函数用于获取字符的ASCII值,而chr()函数则是根据ASCII值返回相应的字符。这两个函数在实现加密算法时非常有用,比如凯撒密码,可以通过它们来执行字符的位移操作。 扩展思考部分提出了一个问题,即如何将凯撒密码应用到汉字加密。由于汉字通常使用Unicode编码,每个汉字可能占用2个或更多字节,所以直接使用凯撒密码可能会导致混淆,因为每个字节都会被单独处理,而不是作为一个整体。因此,针对汉字的加密方法需要更加复杂,不能简单地应用字母表的循环移位。 这份资源介绍了凯撒密码的基本概念,ASCII码的原理,以及如何在编程中实现加密和解密。同时,还引发了关于汉字加密的深入思考,提醒我们在处理不同字符集时需要注意的问题。

for (img1_file, img2_file) in tqdm(img_pairs): img1 = np.array(imread(img1_file)) img2 = np.array(imread(img2_file)) if args.arch == 'StrainNet_l' and img1.ndim == 3: img1 = img1[:,:,1] img2 = img2[:,:,1] img1 = img1/255 img2 = img2/255 if img1.ndim == 2: img1 = img1[np.newaxis, ...] img2 = img2[np.newaxis, ...] img1 = img1[np.newaxis, ...] img2 = img2[np.newaxis, ...] img1 = torch.from_numpy(img1).float() img2 = torch.from_numpy(img2).float() if args.arch == 'StrainNet_h' or args.arch == 'StrainNet_f': img1 = torch.cat([img1,img1,img1],1) img2 = torch.cat([img2,img2,img2],1) input_var = torch.cat([img1,img2],1) elif img1.ndim == 3: img1 = np.transpose(img1, (2, 0, 1)) img2 = np.transpose(img2, (2, 0, 1)) img1 = torch.from_numpy(img1).float() img2 = torch.from_numpy(img2).float() input_var = torch.cat([img1, img2]).unsqueeze(0) # compute output input_var = input_var.to(device) output = model(input_var) if args.arch == 'StrainNet_h' or args.arch == 'StrainNet_l': output = torch.nn.functional.interpolate(input=output, scale_factor=2, mode='bilinear') output_to_write = output.data.cpu() output_to_write = output_to_write.numpy() disp_x = output_to_write[0,0,:,:] disp_x = - disp_x * args.div_flow + 1 disp_y = output_to_write[0,1,:,:] disp_y = - disp_y * args.div_flow + 1 filenamex = save_path/'{}{}'.format(img1_file.stem[:-1], '_disp_x') filenamey = save_path/'{}{}'.format(img1_file.stem[:-1], '_disp_y') np.savetxt(filenamex + '.csv', disp_x,delimiter=',') np.savetxt(filenamey + '.csv', disp_y,delimiter=',')

2023-07-08 上传