【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')
相关文章
|
10天前
|
算法 前端开发 数据处理
小白学python-深入解析一位字符判定算法
小白学python-深入解析一位字符判定算法
26 0
|
13天前
|
机器学习/深度学习 算法 搜索推荐
从理论到实践,Python算法复杂度分析一站式教程,助你轻松驾驭大数据挑战!
【10月更文挑战第4天】在大数据时代,算法效率至关重要。本文从理论入手,介绍时间复杂度和空间复杂度两个核心概念,并通过冒泡排序和快速排序的Python实现详细分析其复杂度。冒泡排序的时间复杂度为O(n^2),空间复杂度为O(1);快速排序平均时间复杂度为O(n log n),空间复杂度为O(log n)。文章还介绍了算法选择、分而治之及空间换时间等优化策略,帮助你在大数据挑战中游刃有余。
40 4
|
13天前
|
机器学习/深度学习 缓存 算法
Python算法设计中的时间复杂度与空间复杂度,你真的理解对了吗?
【10月更文挑战第4天】在Python编程中,算法的设计与优化至关重要,尤其在数据处理、科学计算及机器学习领域。本文探讨了评估算法性能的核心指标——时间复杂度和空间复杂度。通过详细解释两者的概念,并提供快速排序和字符串反转的示例代码,帮助读者深入理解这些概念。同时,文章还讨论了如何在实际应用中平衡时间和空间复杂度,以实现最优性能。
46 6
|
4天前
|
安全 Linux 数据安全/隐私保护
python知识点100篇系列(15)-加密python源代码为pyd文件
【10月更文挑战第5天】为了保护Python源码不被查看,可将其编译成二进制文件(Windows下为.pyd,Linux下为.so)。以Python3.8为例,通过Cython工具,先写好Python代码并加入`# cython: language_level=3`指令,安装easycython库后,使用`easycython *.py`命令编译源文件,最终生成.pyd文件供直接导入使用。
python知识点100篇系列(15)-加密python源代码为pyd文件
|
10天前
|
存储 Java 数据库
密码专辑:对密码加盐加密,对密码进行md5加密,封装成密码工具类
这篇文章介绍了如何在Java中通过加盐和加密算法(如MD5和SHA)安全地存储密码,并提供了一个密码工具类PasswordUtils和密码编码类PasswordEncoder的实现示例。
27 10
密码专辑:对密码加盐加密,对密码进行md5加密,封装成密码工具类
|
11天前
|
存储 机器学习/深度学习 算法
蓝桥杯练习题(三):Python组之算法训练提高综合五十题
蓝桥杯Python编程练习题的集合,涵盖了从基础到提高的多个算法题目及其解答。
18 3
蓝桥杯练习题(三):Python组之算法训练提高综合五十题
|
2天前
|
Java Maven 数据安全/隐私保护
如何实现Java打包程序的加密代码混淆,避免被反编译?
【10月更文挑战第15天】如何实现Java打包程序的加密代码混淆,避免被反编译?
12 2
|
11天前
|
IDE 开发工具 Python
Python 编程入门:打造你的第一个程序
【10月更文挑战第6天】编程,这个听起来高大上又充满神秘感的领域,其实就像学习骑自行车一样。一开始你可能会觉得难以掌握平衡,但一旦你学会了,就能自由地穿梭在广阔的道路上。本文将带你走进 Python 的世界,用最简单的方式让你体验编写代码的乐趣。不需要复杂的理论,我们将通过一个简单的例子——制作一个猜数字游戏,来实践学习。准备好了吗?让我们开始吧!
|
13天前
|
存储 JSON 安全
面向企业应用程序的 Python 配置管理
面向企业应用程序的 Python 配置管理
23 9
|
8天前
|
机器学习/深度学习 人工智能 算法
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
玉米病害识别系统,本系统使用Python作为主要开发语言,通过收集了8种常见的玉米叶部病害图片数据集('矮花叶病', '健康', '灰斑病一般', '灰斑病严重', '锈病一般', '锈病严重', '叶斑病一般', '叶斑病严重'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。再使用Django搭建Web网页操作平台,实现用户上传一张玉米病害图片识别其名称。
22 0
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练