【Python】编写代码,实现恺撒密码的加密算法以及欧氏距离程序

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 在本次python文章种,编写此函数的目的,主要是为了理解和掌握自定义函数过程的定义和调用方法,以及函数中的参数的作用,本次定义的函数是恺撒密码加解密算法
作者:小5聊基础
简介:一只喜欢全栈方向的程序员,欢迎咨询,尽绵薄之力答疑解惑
编程原则:Write Less Do More

image.png

编号 语言或插件 修饰符 说明
1 python math.pow(x,y) 次方,math.pow(3,2),3的2次方,就是9
2 python math.sqrt(x) 平方根,math.sqrt(9)=3

【什么是恺撒密码】

1)在密码学中,恺撒密码(英语:Caesar cipher),或称恺撒加密、恺撒变换、变换加密,是一种最简单且最广为人知的加密技术

2)它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文

3)加密逻辑:例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推

4)解密逻辑:恺撒密码的解密算法程序首先接收用户输入的加密文本,然后对字母a-z和字 母A-Z按照密码算法进行反向转换

5)位移边界需要注意

例如:正向移位三位,则x变为了a,y变为了b,z变成了c

而反向移位(向后移动),则a变成了x,b变成了y,c变成了z,d变成了a

【凯撒加密算法程序编写】

1)函数名定义为:def Caesar_cipher(n,rawstr)

其中,n表示移位数量,rawstr表示用户输入的原文

2)输入输出逻辑

先判断字符串中的字符是否在列表中,如果在,则移位n,如果不在,则原样输出

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# 2022.06.20 11:54
import sys 

# 先判断字符串中的字符是否在列表中,如果在,则移位n,如果不在,则原样输出
def Caesar_cipher(n,rawstr):
    new_str = ''
    str_list = 'abcdefghijklmnopqrstuvwxyz'
    max_index = len(str_list) - 1
    alpha = list(str_list)

    for value in rawstr:
        if value in alpha:
            index = str_list.find(value)
            next_index = index + n
            if next_index > max_index:
                next_index = next_index % max_index - 1
            new_str+=alpha[next_index]
        else:
            new_str+=value
    
    return new_str

while True:
    str_1 = input('请输入原文')
    n = int(input('请输入你所需要移位的数值'))
    cipher = Caesar_cipher(n,str_1)
    print(f'移位{n}后,密文为{cipher}\r\n')

【什么是欧几里得度量】

1)欧几里得度量(euclidean metric)(也称欧氏距离)是一个通常采用的距离定义

2)三维空间里点a和b的坐标,如果分别为a(x1,y1,z1)、b(x2,y2,z2),则ab的距离的计算机公式是

image.png

【欧氏距离实现代码编写】

1)通过上面公式可知,只要确定三位空间的两个坐标点的xyz轴的值,即可通过公式得到两点的距离

2)效果和代码编写如下

e015f226dd9adae650ce068f41763d8.png

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# 2022.06.20 12:19
import sys 
import math

def O_dis(a,b):
    new_str = 0
    
    # 公式:√(x1-x2)^2+(y1-y2)^2+(z1-z2)^2
    # math.sqrt(x) > math.sqrt(9) = 3 > 3^2
    # math.pow(3,2) > 3的2次方
    
    arr_b = b.split(',')
    arr_a = a.split(',')
    
    x1 = int(arr_a[0])
    y1 = int(arr_a[1])
    z1 = int(arr_a[2])

    x2 = int(arr_b[0])
    y2 = int(arr_b[1])
    z2 = int(arr_b[2])

    new_str = math.sqrt(math.pow(x1 - x2,2) + math.pow(y1 - y2,2) + math.pow(z1 - z2,2))

    return new_str

while True:
    a = input('请输入第一个位置的坐标xyz,用逗号分开')
    b = input('请输入第二个位置的坐标xyz,用逗号分开')

    value = O_dis(a,b)

    print(f'欧氏距离的值是{value}\r\n')
相关文章
|
5天前
|
算法
分享一些提高二叉树遍历算法效率的代码示例
这只是简单的示例代码,实际应用中可能还需要根据具体需求进行更多的优化和处理。你可以根据自己的需求对代码进行修改和扩展。
|
1月前
|
存储 Java 数据库
密码专辑:对密码加盐加密,对密码进行md5加密,封装成密码工具类
这篇文章介绍了如何在Java中通过加盐和加密算法(如MD5和SHA)安全地存储密码,并提供了一个密码工具类PasswordUtils和密码编码类PasswordEncoder的实现示例。
30 10
密码专辑:对密码加盐加密,对密码进行md5加密,封装成密码工具类
|
17天前
|
算法 测试技术 开发者
在Python开发中,性能优化和代码审查至关重要。性能优化通过改进代码结构和算法提高程序运行速度,减少资源消耗
在Python开发中,性能优化和代码审查至关重要。性能优化通过改进代码结构和算法提高程序运行速度,减少资源消耗;代码审查通过检查源代码发现潜在问题,提高代码质量和团队协作效率。本文介绍了一些实用的技巧和工具,帮助开发者提升开发效率。
18 3
|
16天前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
29天前
|
存储 缓存 算法
如何通过优化算法和代码结构来提升易语言程序的执行效率?
如何通过优化算法和代码结构来提升易语言程序的执行效率?
|
27天前
|
Java Maven 数据安全/隐私保护
如何实现Java打包程序的加密代码混淆,避免被反编译?
【10月更文挑战第15天】如何实现Java打包程序的加密代码混淆,避免被反编译?
41 2
|
28天前
|
监控 算法 数据安全/隐私保护
基于三帧差算法的运动目标检测系统FPGA实现,包含testbench和MATLAB辅助验证程序
本项目展示了基于FPGA与MATLAB实现的三帧差算法运动目标检测。使用Vivado 2019.2和MATLAB 2022a开发环境,通过对比连续三帧图像的像素值变化,有效识别运动区域。项目包括完整无水印的运行效果预览、详细中文注释的代码及操作步骤视频,适合学习和研究。
|
29天前
|
搜索推荐
插入排序算法的讲解和代码
【10月更文挑战第12天】插入排序是一种基础的排序算法,理解和掌握它对于学习其他排序算法以及数据结构都具有重要意义。你可以通过实际操作和分析,进一步深入了解插入排序的特点和应用场景,以便在实际编程中更好地运用它。
|
1月前
|
NoSQL Java Redis
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
这篇文章介绍了如何使用Spring Boot整合Apache Shiro框架进行后端开发,包括认证和授权流程,并使用Redis存储Token以及MD5加密用户密码。
26 0
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
|
22天前
|
缓存 分布式计算 监控
算法优化:提升程序性能的艺术
【10月更文挑战第20天】算法优化:提升程序性能的艺术