密钥短语密码加密,解密同理。
2019独角兽企业重金招聘Python工程师标准>>>
//密钥短语密码,密钥不能太长!!vc++6.0成功
#include <stdio.h>
#include <malloc.h>
#include <string.h>
int str_len(char *str)
{
int len = 0;
while(*(str++))
len++;
return len;
}
int main(int argc, char *argv[])
{
char *str=NULL;
str=(char*)malloc(127);
printf("请输入密钥必须大写字母(得修正):");
gets(str);
int s = str_len(str);
int v=s;
//重复字母替换成#号
for(int i = 0;i<s-1;i++)
for(int j = i+1;j<s;j++)
{
if(str[i]==str[j])
{
str[j]='#';
}
}
// printf("%s\n",str);
char *p=str;
//将#号删除,像数据结构中的顺序表,覆盖前面的。
while(*p != '\0')
{
if(*p=='#')
{
while(*p != '\0')
{
*p=*(p+1);
p++;
}
p=str;//指针清零,这块想了好久一直BUG
}
else p++;
}
//处理最后一个字母是重复的情况
if(str[str_len(str)-1]=='#')
str[str_len(str)-1]=NULL;
//输出删除后的字符
// printf("输出删除后的字符:");
// printf("%s\n",str);
int e = str_len(str);
int f=e;
char a[27] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','\0'};
char b[27] = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','\0'};
for(int o = 0;o<25;o++)
for(int j = 0;j<e;j++)
{
if(b[o]==str[j])
{
b[o]='#';
}
}
// printf("%s\n",str);
char *pp=b;
//将#号删除,像数据结构中的顺序表,覆盖前面的。
while(*pp != '\0')
{
if(*pp=='#')
{
while(*pp != '\0')
{
*pp=*(pp+1);
pp++;
}
pp=b;//指针清零,这块想了好久一直BUG
}
else pp++;
}
//处理最后一个字母是重复的情况
if(b[25]=='#')
b[25]=NULL;
// printf("%s\n",str);
// printf("去除与str相同的字母");
// printf("%s\n",b);
char *ss;
ss=(char*)malloc(27);
int t;
memset(ss,'0',26);
ss[26]=NULL;
for(i=0;i<str_len(str);i++,s++)
{
ss[s] = str[i];
// printf("i=...%d,s=...%d\n",i,s);
}
t=s;
// printf("t=%d",t);
// printf("把str放入ss中....:");
// printf("%s\n",ss);
for(i = 0;i<26-t;i++,s++)
{
ss[s] = b[i];
}
//printf("把b一部分放入ss中....:");
// printf("%s\n",ss);
// printf("i....=%d",i);
for(int j=0;j<v;i++,j++)
{
ss[j]=b[i];
// printf("B....%c,",b[j]);
// printf("SS...,,",ss[j]);
// printf("%s\n",ss);
}
//输出加密后的字母表
// printf("把b另一部分放入ss中....:");
// for(int w=0;w<26;w++)
// printf("%c",ss[w]);
// printf("\n");
//对输入的内容进行操作
char sstr[50];
printf("请输入正文(必须是小写字母待修正) :");
gets(sstr);
int len = str_len(sstr);
for( i = 0;i<len;i++)
for(int j=0;j<26;j++)
{
if(sstr[i]==a[j])
sstr[i]=ss[j];
else
sstr[i]=sstr[i];
}
printf("加密结果为:");
printf("%s\n",sstr);
return 0;
}
/*
昨天写的。写的不是很完善,希望提出改进意见。
*/
转载于:https://my.oschina.net/u/1240964/blog/171122
密钥短语密码加密,解密同理。相关推荐
- 维吉尼亚密码加密/解密在线工具
维吉尼亚密码加密/解密在线工具,工具链接:http://www.atoolbox.net/Tool.php?Id=856 维吉尼亚密码是在凯撒密码基础上产生的一种加密方法,它将凯撒密码的全部25种位移 ...
- python中字符移位加密_1.1 移位密码加密解密python实现
例题1.1 移位密码加密解密 1.1.使用穷尽密钥搜索法破译如下利用移位密码加密的密文: ESPESTCOPIPCNTDPYPPODACZRCLXXTYR. 1.1答案: K=11,明文序列为: th ...
- php加密密码解析,php密码加密解密
php密码加密解密 龙行 PHP 2020-3-19 1002 0评论 function MD5PWD($data) { $pwd = md5($data); //把密码分割成 ...
- 凯撒密码加密解密C语言详细代码
凯撒密码加密解密C语言详细代码 凯撒密码 又叫循环移位密码.它的加密方法,就是将明文中的每个字母用此字符在字母表中后面第k个字母替代.它的加密过程可以表示为下面的函数: E(m)=(m+k) mod ...
- 凯撒密码加密解密——Java代码(密码学)
凯撒密码加密解密--Java代码(密码学) 凯撒密码: 恺撒密码(英语:Caesar cipher),或称恺撒加密.恺撒变换.变换加密,是一种最简单且最广为人知的加密技术.它是一种替换加密的技术,明文 ...
- VIP品会密码加密解密与登录
上班都快一周了,一直想更新,奈何小伙还没有从假期的快乐中缓过来,今天终于耐下心来更新一小篇.抠一下某品会的JS代码,接着使用抠取的JS代码加密密码进行登录.友情提示:为避免不必要的纠纷,本文中所有网址 ...
- 单表代换密码加密解密
单表代换密码加密解密原理: 单表代换是指英文字母在进行密码编码替换的时候,有一张对照表,也就是说,对于每一个字母,都是唯一对应的,如: 26个源字母表为:abcdefghijklmnopqrstuvw ...
- Python-摩斯密码加密解密
文章目录 前言 一.摩斯密码表 [1]. encode.txt [2]. decode.txt 二.代码 前言 密码表只写了英文字母和数字,在百度的时候发现不同地方写的符号转换方式不大一样. 你也可以 ...
- Python编程:实现凯撒密码加密解密
凯撒密码 原理: 通过把字母移动一定的位数来实现加解密 明文中的所有字母从字母表向后(或向前)按照一个固定步长进行偏移后被替换成密文. 例如: 当步长为3时,A被替换成D,B被替换成E,依此类推,X替 ...
最新文章
- TCP实现P2P通信、TCP穿越NAT的方法、TCP打洞
- gitlab的日常使用
- git 提交_使用Git-Rebase合并多次提交
- mysql获取当前时间,及其相关操作
- 如何通过Python玩转小视频
- Laravel 怎么查看执行的Sql语句
- (转)使用Spring配置文件实现AOP
- shell获取文件扩展名(前缀,后缀)
- php中is_scalar判断是否是标量
- 二叉树中获取从根节点到某个节点的路径
- sklearn2pmml模型转化实践
- java输出int_如何使打印整数函数(没有printf)输出INT_MAX
- 树莓派python智能家居_用树莓派DIY一个智能家居服务器
- 【正点原子Linux连载】第六十九章 Linux 网络驱动实验 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0
- 电脑怎么把大量音频合并
- html验证座机号码_手机号码 座机号码验证
- 全新版windows terminal 更换背景
- OneDrive无法登陆正常使用 There was a problem connecting to onedrive
- 判断日期是否为周末 java_如何用Java检查给定的日期是否代表周末
- 2023深圳大学计算机考研信息汇总