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

密钥短语密码加密,解密同理。相关推荐

  1. 维吉尼亚密码加密/解密在线工具

    维吉尼亚密码加密/解密在线工具,工具链接:http://www.atoolbox.net/Tool.php?Id=856 维吉尼亚密码是在凯撒密码基础上产生的一种加密方法,它将凯撒密码的全部25种位移 ...

  2. python中字符移位加密_1.1 移位密码加密解密python实现

    例题1.1 移位密码加密解密 1.1.使用穷尽密钥搜索法破译如下利用移位密码加密的密文: ESPESTCOPIPCNTDPYPPODACZRCLXXTYR. 1.1答案: K=11,明文序列为: th ...

  3. php加密密码解析,php密码加密解密

    php密码加密解密 龙行    PHP    2020-3-19    1002    0评论 function MD5PWD($data) { $pwd = md5($data); //把密码分割成 ...

  4. 凯撒密码加密解密C语言详细代码

    凯撒密码加密解密C语言详细代码 凯撒密码 又叫循环移位密码.它的加密方法,就是将明文中的每个字母用此字符在字母表中后面第k个字母替代.它的加密过程可以表示为下面的函数: E(m)=(m+k) mod ...

  5. 凯撒密码加密解密——Java代码(密码学)

    凯撒密码加密解密--Java代码(密码学) 凯撒密码: 恺撒密码(英语:Caesar cipher),或称恺撒加密.恺撒变换.变换加密,是一种最简单且最广为人知的加密技术.它是一种替换加密的技术,明文 ...

  6. VIP品会密码加密解密与登录

    上班都快一周了,一直想更新,奈何小伙还没有从假期的快乐中缓过来,今天终于耐下心来更新一小篇.抠一下某品会的JS代码,接着使用抠取的JS代码加密密码进行登录.友情提示:为避免不必要的纠纷,本文中所有网址 ...

  7. 单表代换密码加密解密

    单表代换密码加密解密原理: 单表代换是指英文字母在进行密码编码替换的时候,有一张对照表,也就是说,对于每一个字母,都是唯一对应的,如: 26个源字母表为:abcdefghijklmnopqrstuvw ...

  8. Python-摩斯密码加密解密

    文章目录 前言 一.摩斯密码表 [1]. encode.txt [2]. decode.txt 二.代码 前言 密码表只写了英文字母和数字,在百度的时候发现不同地方写的符号转换方式不大一样. 你也可以 ...

  9. Python编程:实现凯撒密码加密解密

    凯撒密码 原理: 通过把字母移动一定的位数来实现加解密 明文中的所有字母从字母表向后(或向前)按照一个固定步长进行偏移后被替换成密文. 例如: 当步长为3时,A被替换成D,B被替换成E,依此类推,X替 ...

最新文章

  1. TCP实现P2P通信、TCP穿越NAT的方法、TCP打洞
  2. gitlab的日常使用
  3. git 提交_使用Git-Rebase合并多次提交
  4. mysql获取当前时间,及其相关操作
  5. 如何通过Python玩转小视频
  6. Laravel 怎么查看执行的Sql语句
  7. (转)使用Spring配置文件实现AOP
  8. shell获取文件扩展名(前缀,后缀)
  9. php中is_scalar判断是否是标量
  10. 二叉树中获取从根节点到某个节点的路径
  11. sklearn2pmml模型转化实践
  12. java输出int_如何使打印整数函数(没有printf)输出INT_MAX
  13. 树莓派python智能家居_用树莓派DIY一个智能家居服务器
  14. 【正点原子Linux连载】第六十九章 Linux 网络驱动实验 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0
  15. 电脑怎么把大量音频合并
  16. html验证座机号码_手机号码 座机号码验证
  17. 全新版windows terminal 更换背景
  18. OneDrive无法登陆正常使用 There was a problem connecting to onedrive
  19. 判断日期是否为周末 java_如何用Java检查给定的日期是否代表周末
  20. 2023深圳大学计算机考研信息汇总

热门文章

  1. Linux的LAMP
  2. 吴颖二:12.27 什么是现货,如何操作才能盈利
  3. 华为P10的内存门和闪存门的检测方法
  4. Super expression must either be null or a function, not undefined
  5. skynet源码阅读7--死循环检测
  6. 【转】JavaScript中的this关键字使用的四种调用模式
  7. Centos 6 系统镜像光盘做YUM源
  8. 使用Hyper-V Server PowerShell
  9. XMPP核心协议客户端
  10. jmeter 使用命令行执行