【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')
相关文章
|
7天前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
123 55
|
19天前
|
开发框架 数据建模 中间件
Python中的装饰器:简化代码,增强功能
在Python的世界里,装饰器是那些静悄悄的幕后英雄。它们不张扬,却能默默地为函数或类增添强大的功能。本文将带你了解装饰器的魅力所在,从基础概念到实际应用,我们一步步揭开装饰器的神秘面纱。准备好了吗?让我们开始这段简洁而富有启发性的旅程吧!
26 6
|
17天前
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
101 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
5天前
|
安全 API C语言
Python程序的安全逆向(关于我的OPENAI的APIkey是如何被盗的)
本文介绍了如何使用C语言编写一个简单的文件加解密程序,并讨论了如何为编译后的软件添加图标。此外,文章还探讨了Python的.pyc、.pyd等文件的原理,以及如何生成和使用.pyd文件来增强代码的安全性。通过视频和教程,作者详细讲解了生成.pyd文件的过程,并分享了逆向分析.pyd文件的方法。最后,文章提到可以通过定制Python解释器来进一步保护源代码。
31 6
|
12天前
|
数据可视化 Python
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
通过这些思维导图和分析说明表,您可以更直观地理解和选择适合的数据可视化图表类型,帮助更有效地展示和分析数据。
54 8
|
18天前
|
IDE 程序员 开发工具
Python编程入门:打造你的第一个程序
迈出编程的第一步,就像在未知的海洋中航行。本文是你启航的指南针,带你了解Python这门语言的魅力所在,并手把手教你构建第一个属于自己的程序。从安装环境到编写代码,我们将一步步走过这段旅程。准备好了吗?让我们开始吧!
|
17天前
|
Python
探索Python中的装饰器:简化代码,增强功能
在Python的世界里,装饰器就像是给函数穿上了一件神奇的外套,让它们拥有了超能力。本文将通过浅显易懂的语言和生动的比喻,带你了解装饰器的基本概念、使用方法以及它们如何让你的代码变得更加简洁高效。让我们一起揭开装饰器的神秘面纱,看看它是如何在不改变函数核心逻辑的情况下,为函数增添新功能的吧!
|
17天前
|
程序员 测试技术 数据安全/隐私保护
深入理解Python装饰器:提升代码重用与可读性
本文旨在为中高级Python开发者提供一份关于装饰器的深度解析。通过探讨装饰器的基本原理、类型以及在实际项目中的应用案例,帮助读者更好地理解并运用这一强大的语言特性。不同于常规摘要,本文将以一个实际的软件开发场景引入,逐步揭示装饰器如何优化代码结构,提高开发效率和代码质量。
42 6
|
17天前
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将介绍网络安全的重要性,分析常见的网络安全漏洞及其危害,探讨加密技术在保障网络安全中的作用,并强调提高安全意识的必要性。通过本文的学习,读者将了解网络安全的基本概念和应对策略,提升个人和组织的网络安全防护能力。
|
18天前
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
40 10