凯撒密码,凯撒加密解密.
来源:互联网 发布:陕西广电网络智能卡号 编辑:程序博客网 时间:2024/05/06 03:48
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace CaesarArithmetic{ public partial class Frm_Main : Form { int iShifting = 5;//默认偏移5 public Frm_Main() { InitializeComponent(); } //获取字符的ASCII码 public int AscII(string str) { byte[] array = new byte[1];//创建字节数组 array = System.Text.Encoding.ASCII.GetBytes(str);//为字节数组赋值 int asciicode = (short)(array[0]);//获取字节数组的第一项 return asciicode;//返回字节数组的第一项 } public string Caesar(string str)//凯撒加密算法的实现 { char[] c = str.ToCharArray();//创建字符数组 string strCaesar = "";//定义一个变量,用来存储加密后的字符串 for (int i = 0; i < str.Length; i++)//遍历字符串中的每一个字符串 { string ins = c[i].ToString();//记录遍历到的字符 int iIns = AscII(ins); string outs = "";//定义一个变量,用来记录加密后的字符串 bool isChar = "0123456789abcdefghijklmnopqrstuvwxyz".Contains(ins.ToLower());//判断指定的字符串中是否包含遍历到的字符 bool isToUpperChar = isChar && (ins.ToUpper() == ins);//判断遍历到的字符是否是大写 ins = ins.ToLower();//将遍历到的字符转换为小写 if (isChar)//判断指定的字符串中是否包含遍历到的字符 { Console.WriteLine("ins = {0}, a = {1}, z={2},AscII(ins)={3} ", ins, AscII("a"), AscII("z"), AscII(ins)); int offset = (AscII(ins) + iShifting - AscII("a")) % (AscII("z") - AscII("a") + 1);//获取字符的ASCII码 Console.WriteLine("({0} + 5 - 97 ) % (122 - 97 + 1) ", AscII(ins) ); Console.WriteLine("offset={0}",offset); outs = Convert.ToChar(offset + AscII("a")).ToString();//转换为字符并记录 if (isToUpperChar)//判断是否大写 { outs = outs.ToUpper();//全部转换为大写 } } else { outs = ins;//记录遍历的字符 } strCaesar += outs;//添加到加密字符串中 } return strCaesar;//返回加密后的字符串 } private void button1_Click(object sender, EventArgs e) { string P_str_Code = textBox1.Text;//记录要加密的密码 textBox2.Text = Caesar(P_str_Code);//显示加密后的字符串 } private void button2_Click(object sender, EventArgs e) { string P_str_Code = textBox2.Text;//记录要解密的密码 textBox2.Text = Caesar2(P_str_Code);//显示解密后的字符串 } public string Caesar2(string str)//凯撒加密算法的实现 { char[] c = str.ToCharArray();//创建字符数组 string strCaesar = "";//定义一个变量,用来存储加密后的字符串 for (int i = 0; i < str.Length; i++)//遍历字符串中的每一个字符串 { string ins = c[i].ToString();//记录遍历到的字符 string outs = "";//定义一个变量,用来记录加密后的字符串 bool isChar = "0123456789abcdefghijklmnopqrstuvwxyz".Contains(ins.ToLower());//判断指定的字符串中是否包含遍历到的字符 bool isToUpperChar = isChar && (ins.ToUpper() == ins);//判断遍历到的字符是否是大写 ins = ins.ToLower();//将遍历到的字符转换为小写 if (isChar)//判断指定的字符串中是否包含遍历到的字符 { int iIns = AscII(ins); Console.WriteLine("ins = {0}, a = {1}, z={2} ", iIns, AscII("a"), AscII("z")); //int offset = (AscII(ins) + 5 - AscII("a")) % (AscII("z") - AscII("a") + 1);//获取字符的ASCII码 //int offset = (AscII(ins) + 5 - AscII("a")) % (AscII("z") - AscII("a") + 1);//获取字符的ASCII码 int offset = (AscII("z") + iShifting - AscII(ins)) % (AscII("z") - AscII("a") + 1); Console.WriteLine("offset = {0} ", offset); //outs = Convert.ToChar(offset + AscII("a")).ToString();//转换为字符并记录 outs = Convert.ToChar(AscII("z") - offset).ToString();//转换为字符并记录 if (isToUpperChar)//判断是否大写 { outs = outs.ToUpper();//全部转换为大写 } Console.WriteLine("outs = {0}", outs); } else { outs = ins;//记录遍历的字符 } strCaesar += outs;//添加到加密字符串中 } return strCaesar;//返回加密后的字符串 } }}
0 0
- 凯撒密码,凯撒加密解密.
- C++ 凯撒密码 加密解密
- 个人写的凯撒密码,加密解密
- 凯撒密码(加密与解密)
- 凯撒密码--简单的加密与解密
- 凯撒密码 C语言 加密解密
- 凯撒密码加密解密--JAVA实现(基础)
- 凯撒 加密 解密
- 凯撒密码解密
- 加密与解密(凯撒密码与栅栏密码)
- 凯撒(caser)密码实现加密与解密
- Java IO4 实现凯撒密码加密解密文本文件
- Python实现凯撒密码的加密与解密
- JAVA之凯撒加密【解密】
- 凯撒密码解密脚本(python)
- C++实现凯撒密码加密
- 凯撒密码,简单的加密
- 凯撒加密
- 循环-01. 求整数段和(15)
- RDD笔记
- Apache单服务器多端口多站点配置
- 【Ubuntu】ubuntu安装图文教程
- windows ssh-add Could not open a connection to your authentication agent.
- 凯撒密码,凯撒加密解密.
- 数组-14. 数字加密(15)
- 如何为你的初创应用App开发公司建立战略计划(商业战略竞争五力学)
- 天声人語 20150215
- 软件开发工程师(JAVA)中级考试大纲之------- 四:(三)maven介绍及学习
- ViewPager onPageChangeListener
- 学习方法一
- 日经春秋 20150215
- 什么情况,这真的是我的账号吗