JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

信息加密系列 | A1Z26密码多语言实现

wys521 2024-12-03 12:57:36 精选教程 44 ℃ 0 评论
解密前
14-5-24-20 21-16: "6-15-15-20-2-15-20 20-23-15: 7-18-21-14-11-12-5'19 7-18-5-22-5-14-7-5."
解密后
NEXT UP: "FOOTBOT TWO: GRUNKLE'S GREVENGE."

小彩蛋
112626 23-9-12-12 2-5 18-5-16-12-1-3-5-4 2-25 22-9-18-7-9-14-9-1 9-14 20-8-5 14-5-24-20 2-12-15-7

简介

A1Z26密码是一种简单的加密算法,它的原理是将输入的字符串按照字母表顺序转换为数字。比如a转换为1,b转换为2,以此类推。这种加密方法适用于一些不需要高级保密措施的场景,比如初学者的练习、暗示等。

A1Z26密码对照表

字符

数字

A

1

B

2

C

3

D

4

E

5

F

6

G

7

H

8

I

9

J

10

K

11

L

12

M

13

N

14

O

15

P

16

Q

17

R

18

S

19

T

20

U

21

V

22

W

23

X

24

Y

25

Z

26

JAVA实现:

下面是 Java 的 A1Z26 加解密示例代码:

import java.util.Scanner;

public class A1Z26 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入需要加密的字符串:");
        String input = scanner.nextLine().toLowerCase();
        String encryptResult = encrypt(input);
        System.out.println("加密后结果为:" + encryptResult);

        System.out.println("\n请输入需要解密的字符串,空格区分");
        String cipher = scanner.nextLine().toLowerCase();
        String decryptResult = decrypt(cipher);
        System.out.println("解密后结果为:" + decryptResult);

        scanner.close();
    }

    // 加密函数
    private static String encrypt(String input) {
        String[] chars = input.split("");
        String result = "";
        for (String s : chars) {
            if (s.matches("[a-z]")) {
                result += Integer.toString(s.charAt(0) - 'a' + 1) + " ";
            } else {
                result += s;
            }
        }
        return result.trim();
    }

    // 解密函数
    private static String decrypt(String cipher) {
        String[] integers = cipher.split(" ");
        String result = "";
        for (String s : integers) {
            if (s.matches("[1-9]\\d*")) {
                result += (char) (Integer.parseInt(s) + 'a' - 1);
            } else {
                result += s;
            }
        }
        return result;
    }
}

首先使用 Scanner 从控制台获取用户的输入。在加密函数中,我们对输入的字符串进行了 A1Z26 加密,并返回加密后的结果。在解密函数中,我们对加密后的数字序列进行解密,并返回解密后的结果。将加解密函数放在一个类中,可以使代码更加清晰和易于维护。

示例输出:

请输入需要加密的字符串:Hello World!
加密后结果为:8 5 12 12 15 23 15 18 12 4 !

请输入需要解密的字符串:
8 5 12 12 15 23 15 18 12 4 !
解密后结果为:hello world!

以上就是 Java 的 A1Z26 加解密示例代码,你可以根据自己的需求进行修改和优化。

Python示例代码

以下是 Python 的 A1Z26 加解密示例代码:

import re

# 加密函数
def encrypt(input_str):
    result = ""
    for char in input_str:
        if char.islower():  # 判断是否为小写字母
            result += str(ord(char) - 96) + " "
        else:
            result += char
    return result.strip()

# 解密函数
def decrypt(cipher_str):
    result = ""
    integers = re.findall('\d+', cipher_str)  # 使用正则表达式提取数字
    for integer in integers:
        result += chr(int(integer) + 96)
    return result

# 测试样例
input_str = "hello world!"
cipher_str = encrypt(input_str)
print(f"加密后:{cipher_str}")
plain_str = decrypt(cipher_str)
print(f"解密后:{plain_str}")

在加密函数中,我们遍历输入字符串的每一个字符,对于每一个小写字母,使用 ord() 函数获取其对应的 ASCII 码,并减去 96,得到其在本题中所代表的数字,将其添加到结果字符串中。对于非小写字母字符,直接添加到结果字符串中。

在解密函数中,我们使用正则表达式 re.findall() 函数提取密文中的数字,并将其转换为 ASCII 码对应的字符。

示例输出:

加密后:8 5 12 12 15 23 15 18 12 4!
解密后:hello world!

以上就是 Python 的 A1Z26 加解密示例代码,你可以根据自己的需求进行修改和优化。

Js示例代码

以下是 JavaScript 的 A1Z26 加解密示例代码,配合一个简单的 HTML 页面使用:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>A1Z26加解密</title>
    <script>
        // 加密函数
        function encrypt(inputStr) {
            var result = "";
            for (var i = 0; i < inputStr.length; i++) {
                var charCode = inputStr.charCodeAt(i);
                if (charCode >= 97 && charCode <= 122) { // 判断是否为小写字母
                    result += (charCode - 96) + " ";
                } else {
                    result += inputStr[i];
                }
            }
            return result.trim();
        }

        // 解密函数
        function decrypt(cipherStr) {
            var result = "";
            var integers = cipherStr.match(/\d+/g); // 使用正则表达式提取数字
            for (var i = 0; i < integers.length; i++) {
                result += String.fromCharCode(parseInt(integers[i]) + 96);
            }
            return result;
        }

        // 加密解密操作
        function operate() {
            var inputStr = document.getElementById("input-text").value;
            var mode = document.getElementById("mode").value;
            var outputStr = "";
            if (mode == "encrypt") {
                outputStr = encrypt(inputStr);
            } else if (mode == "decrypt") {
                outputStr = decrypt(inputStr);
            }
            document.getElementById("output-text").value = outputStr;
        }
    </script>
</head>
<body>
    <h1>A1Z26加解密</h1>
    <p>请输入要加密/解密的字符串:</p>
    <textarea id="input-text" rows="5"></textarea>
    <br>
    <label for="mode">请选择操作类型:</label>
    <select id="mode">
        <option value="encrypt">加密</option>
        <option value="decrypt">解密</option>
    </select>
    <br>
    <button onclick="operate()">执行操作</button>
    <br>
    <p>处理结果:</p>
    <textarea id="output-text" rows="5" readonly></textarea>
</body>
</html>

在这个 HTML 页面中,我们定义了两个函数 encrypt() 和 decrypt(),分别用于加密和解密操作。

在加密函数中,我们遍历输入字符串的每一个字符,使用 charCodeAt() 函数获取其 Unicode 码点值,并判断是否为小写字母。如果是小写字母,则减去 96(‘a’ 的 Unicode 码点值为 97),得到其在本题中所代表的数字,将其添加到结果字符串中。对于非小写字母字符,直接添加到结果字符串中。最后使用 trim() 函数去除字符串首尾的空格。

在解密函数中,我们使用正则表达式 match() 函数提取密文中的数字,并将其转换为 ASCII 码对应的字符后添加到结果字符串中。

此外,我们还定义了一个名为 operate() 的函数,用于根据用户选择的操作类型进行加密或解密操作,并将结果输出到 HTML 页面上。

注意:为了方便示例演示,本代码将所有 JavaScript 代码、CSS 代码、HTML 代码全部写在了一个文件中,实际上大型的 Web 应用程序会将它们分别封装在不同的文件中,以便管理和维护。

示例输出:

链接:https://juejin.cn/post/7215153930473373757

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表