Vigenère 密码加密及解密

定义:戳这里

加密:

#include<bits/stdc++.h>
using namespace std;
char a[1200],b[1200],tmp,ans[1200];
int main()
{
    printf("       Vigenère加密\n\n" );
    printf("输入秘钥:");scanf("%s",b);puts("");
    printf("输入明文:");scanf("%s",a);puts("");
    for(int i=0;i<strlen(a);)
    {
        for(int j=0;j<strlen(a)&&j<strlen(b);j++,i++)
        {
            int tmp;
            if(b[j]>='A'&&b[j]<='Z')tmp=b[j]-'A'+'a';
            else tmp=b[j];
            tmp=tmp-'a';
            if(a[i]>='a'&&a[i]<='z') {
                if(tmp+a[i]>'z')ans[i]=tmp-26+a[i];
                else ans[i]=tmp+a[i];
            }
            if(a[i]>='A'&&a[i]<='Z') {
                if(tmp+a[i]>'Z')ans[i]=tmp-26+a[i];
                else ans[i]=tmp+a[i];
            }
        }
    }
    printf("密文:%s\n",ans);
    return 0;
}

解密:

#include<bits/stdc++.h>
using namespace std;
char a[1200],b[1200],tmp,ans[1200];
int main()
{
    cout<<"       Vigenère解密\n" <<endl;
    cout<<"输入秘钥:";scanf("%s",b);puts("");
    cout<<"输入秘文:";scanf("%s",a);puts("");
    for(int i=0;i<strlen(a);)
    {
        for(int j=0;j<strlen(a)&&j<strlen(b);j++,i++)
        {
            if(a[i]>='A'&&a[i]<='Z')
            {
                if(b[j]>='a'&&b[j]<'z')tmp=b[j]-'a'+'A';
                else tmp=b[j];
                if(a[i]-tmp>=0)ans[i]=a[i]-tmp+'A';
                else ans[i]=a[i]-tmp+'Z'+1;
            }
            if(a[i]>='a'&&a[i]<='z')
            {
                if(b[j]>='A'&&b[j]<='Z')tmp=b[j]-'A'+'a';
                else tmp=b[j];
                if(a[i]-tmp>=0)ans[i]=a[i]-tmp+'a';
                else ans[i]=a[i]-tmp+'z'+1;
            }
        }
    }
    printf("明文:%s\n",ans);
    return 0;
}

Vigenère 密码加密及解密

原文地址:https://www.cnblogs.com/zzctommy/p/12410107.html

时间: 2024-10-10 23:36:04

Vigen&#232;re 密码加密及解密的相关文章

Java密码加密与解密

Java密码加密与解密 Java中对代码进行加密与解密,其中用MD5方式的是不可逆的.   import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.security.InvalidKeyException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import

C#:使用MD5对用户密码加密与解密

C#中常涉及到对用户密码的加密于解密的算法,其中使用MD5加密是最常见的的实现方式.本文总结了通用的算法并结合了自己的一点小经验,分享给大家. 一.使用16位.32位.64位MD5方法对用户名加密 1)16位的MD5加密 /// <summary> /// 16位MD5加密 /// </summary> /// <param name="password"></param> /// <returns></returns&

转 C#:使用MD5对用户密码加密与解密

C#中常涉及到对用户密码的加密于解密的算法,其中使用MD5加密是最常见的的实现方式.本文总结了通用的算法并结合了自己的一点小经验,分享给大家. 一.使用16位.32位.64位MD5方法对用户名加密 1)16位的MD5加密 /// <summary> /// 16位MD5加密 /// </summary> /// <param name="password"></param> /// <returns></returns&

信息安全之仿射密码加密和解密

本文利用仿射密码,对一个只含可打印字符的txt文件进行加密和解密. //加解密时,文件内容为所有可打印字符,即ASCII码从32-126的95个字符 #include<iostream> #include<fstream> using namespace std; //加密类 class Encrypt { public: void set_AB(int a, int b) {A = a; B = b;} //设置加密密钥 int gcd(int a, int b) { while

MySQL密码加密与解密

MySQL加密和解密实例详解 有多种前端加密算法可用于数据加密.解密,这是一种简单的数据库级别的数据加密.解密解决方案. 以MySQL数据库为例,它内建了相应的加密函数(AES_ENCRYPT() )和解密函数(AES_DECRYPT()). 1.建表:建表时注意数据的类型 CREATE TABLE users( username VARCHAR(10), PASSWORD VARCHAR(10), testpswd VARBINARY(20) ); 此表有三个字段,'用户名' ,'密码' ,'

维吉尼亚密码加密、解密算法(破解还不会);

#include <iostream> #include<cstdio> using namespace std; void init_pass_table(char (&code_table)[27][27]){//制密码对照表;(不能当做一维数组来看会有别的问题) code_table[0][0]='0'; for(int i=0;i<26;i++){ code_table[0][1+i]='a'+i; } for(int i=0;i<26;i++){ co

关于加密和解密的方法

最近在做一个关于密码加密和解密的winform,要求对密码的TextBox输入的字符串进行加密,同时传值得时候也要解析出来,于是就写了一个demo,仅供参考. EncryptOrDecryptPassword类包含加密和解密两个简单的方法,这个方法是根据字符的Encoding来加密的,然后在main函数中调用. EncryptOrDecryptPassword类如下: 1 public class EncryptOrDecryptPassword 2 { 3 public string Decr

使用kettle转换中的JavaScript对密码进行加密和解密

日常开发中,为了确保账号和密码的安全,时常要对密码进行加密和解密.然而kettle是怎么对密码进行加密和解密的呢? 下面的代码需要再转换中的JavaScript中运行. var encrypted_password = 'not encrypted'; 加密(js中调用): encrypted_password = "Encrypted " + Packages.org.pentaho.di.core.encryption.Encr.encryptPassword(clear_pass

凯撒密码加密解密--JAVA实现(基础)

凯撒密码一种代换密码,据说凯撒是率先使用加密函的古代将领之一,因此这种加密方法被称为恺撒密码.凯撒密码的基本思想是:通过把字母移动一定的位数来实现加密和解密.明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文. 使用JAVA程序实现对明文的加密: package com.qikeyishu.www; public class Kaisapwd { public static void main(String[] args) { char str[]={'a','b'