C语言加密,明文暗文的无规则转化。

让我们选一个英文短语, 称其为密钥字(key word)或密钥短语(key phrase),如HAPPY NEWYEAR,按顺序去掉重复字母和空格得HAPYNEWR。将它依次写在明文字母表之下, 而后再将明文字母表中未在短语中出现过的字母依次写在此短语之后, 就可构造出一个代替表, 如下所示:
明文:ABCDEFGHIJKLMNOPQRSTUVWXYZ
密文:HAPYNEWRBCDFGIJKLMOQSTUVXZ
请编写一个程序,可以通过用户输入密码(一个字符串)生成密码表(即上面的那个表),然后可以对用户输入的明文进行加密。
输入样例:
明文:ILoveHuiwen
输出样例:
密文:BFjtnRsbuni

0

2个回答

#include
#include
#include
char* mishi(char a[], char b[]);//设置一个函数用来改变密匙.
char* duizhaobiao(char a);//得到对照表
char
miwen(char a[], char b[]);
int main()
{
char ch1[50];
char ch[100];
char ch2[27];
gets(ch);//输入密匙
char p = mishi(ch, ch1);//得到密匙
char *p1 = duizhaobiao(p);
strcpy(ch2, p);
strcat(ch2, p1);
printf("该表是对应表%s", ch2);
printf("请输入明文\n");
char in[100];
gets(in);
miwen(ch2, in);
getch();
return 0;
}
char
mishi(char a[], char b[])
{

for (int i = 0; i <= strlen(a); i++)
{
    for (int j = 0; j <= strlen(a); j++)
    if (a[i] == a[j] && i != j)
        a[j] = ' ';
}
int j = 0;
for (int i = 0; i <= strlen(a); i++)//处理空格
{
    if (a[i] != ' ')
    {
        b[j] = a[i];//用另一个数组保持密匙
        j++;
    }
    else
        continue;
}
b[j] = '\0';//使数组b成为字符串。
return b;

}
char* duizhaobiao(char a[])
{

char ch1[26] = { 0 };//初始化全为0,对照字母表只要重复为1.
char ch2[25];
for (int i = 0; i < strlen(a); i++)
{
    int j = 0;
    for (char ch = 'A'; ch <= 'Z'; ch++)
    {
        if (a[i] == ch)
            ch1[j]++;//参考桶排法.
        else
            j++;
    }
}
char ch = 'A';
int b = 0;
for (int i = 0; i < 26; i++)
{
    for (int j = 0; j >= ch1[i]; j--)
    {
        ch2[b] = ch;
        b++;
    }
    ch++;
}
ch2[b] = '\0';
return ch2;

}
char* miwen(char a[], char b[])
{
for (int i = 0; i <= strlen(b); i++)
{
int j = 0;
for (char ch1 = 'A'; ch1 <= 'Z'; ch1++)
if (b[i] == ch1)
{
printf("%c", a[j]);
}
else
j++;
}

}
记住只能大写,如果需要小写使用头文件

0
weixin_43352534
weixin_43352534 谢谢
8 个月之前 回复

#include
#include
int main()
{
int a,b,c,d,e,f,g;
char surface[1000]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char secret[1000];
gets(secret);
strupr(secret);
strcat(secret,surface);

for(f=0;f<strlen(secret);f++)
if(secret[f]==' ')

{for(g=f;g<strlen(secret);g++)
{
secret[g]=secret[g+1];

}
g--;

}
for(a=0;a<strlen(secret);a++)

for(b=a+1;b<=strlen(secret);b++)

        {
            if(secret[a]==secret[b])
        {
            for(c=b;c<strlen(secret);c++)
            secret[c]=secret[c+1];
            b--;            
        }
        }
printf("%s\n%s\n",surface,secret);  
char give[100];
char Fsurface[100];
char Fsecret[100];
strcpy(Fsurface,strlwr(surface));
strcpy(Fsecret,strlwr(secret));
strcat(Fsecret,strupr(surface));
strcat(Fsecret,strupr(secret));   
scanf("%s",give);
for(d=0;d<=strlen(give);d++)
    for(e=0;e<=strlen(Fsurface);e++)
    {
        if(give[d]==Fsurface[e])  
            printf("%c",Fsecret[e]);
    }
0
weixin_43352534
weixin_43352534 我回答我自己
8 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
密码输入框的明文暗文转换
&amp;lt;input type=&quot;password&quot; placeholder=&quot;请输入密码&quot; id=&quot;password&quot;&amp;gt; &amp;lt;div class=&quot;see-password&quot;&amp;gt; &amp;lt;i class=&quot;see-password-icon&quot;&amp;gt;&amp;lt;/i&amp;gt; &amp;lt;i class=&quot;n
密码框明文暗文切换
显示密码 function aaa() {     var passType = document.getElementById('pw').type;     if(passType == "text"){         document.getElementById('pw').type = "password";     }else{         document.getE
使用java编程实现明文和密文之间的互转
        char c[] = &quot;大家好&quot;.toCharArray(); for(int i = 0;i&amp;lt;c.length;i++) { c[i] = (char)(c[i] ^ 'Q');//将明文转换成密文 } String string = new String(c, 0, c.length); S...
☆ C/C++ 模拟输入密码(控制台暗文输出)
偶然间遇到了getch()函数,突然间真的有点茫然~ 于是,一不做二不休,了解它的详细使用方法和它类似的函数的使用:   ****************************************************************************************************************************************...
自定义EditText_密码明文切换_点击清空输入框
自定义EditText默认点击小图标进行文本清空,xml加入一行代码点击小图标进行密码明文切换
Android EditText 明文变为密文
最近在做项目的过程中,遇到这个问题,说两种情况的解决方式吧,首先,先上一张项目中的效果图: 要求是把页面中的 原密码、新密码、确认 都改为密文,即“.......”这种形式; 方法一: editor密码隐藏,怎么写? 有2种方法处理: 代码方法:input.setInputType(InputType.TYPE_CLASS_TEXT |InputType.TYPE_T
vue登陆密码明文和暗文切换
组件:有赞移动端 &amp;lt;template&amp;gt; &amp;lt;div id=&quot;login&quot;&amp;gt;   &amp;lt;van-nav-bar title=&quot;用户登陆&quot; /&amp;gt;   &amp;lt;van-cell-group&amp;gt; &amp;lt;van-field v-model=&quot;username&quot; required clearable label=&quot;用户
明文密文用密钥加密解密
设明文P=P0P1P2…Pn和密钥K=K0K1K2…Km(n>=m)中的字符Pi(1<=i<=n)或Kj(1<=j<=m)的ASCII为00~7FH,用密钥K对明文P进行加密得到密文C=C0C1C2…Cn, 用密钥K对密文C解密得到明文P。 加密: Ci=Pi+Kj (j=i mod (m+1)) (当Ci<=7FH) Ci=Pi+Kj-80H (j=i mod (m+1)) (当Ci>7FH) 解密:: Pi=Ci-Kj (j=i mod (m+1)) (当Ci>=Kj) Pi=Ci-Kj+80H (j=i mod (m+1)) (当Ci<Kj)
HTML中表单的明文框(text),暗文框(password),单选框(radio),多选框(checked), 属性name和属性checked的讲解
name是用来让单选框中的选项互斥的,checked是设置系统初始默认选项的。 表单初学 账号: 密码:
android Edittext 密码明文暗文切换时 digits 失效的解决办法
一 明暗问切换密码的方式 //明文显示 mPW.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD); //光标返回当前位置 mPW.setSelection(setpswEt.getText().length()); //暗文显示 mPW.setInputType(InputType.TYPE_CLASS_TE...
Android中的EditText中的内容的明文与密文的下操作
最近在做项目中,我的项目中用到了明文和密文之间的相互切换。以及语言的国际化处理。 Edittext 中的明文和密文切换有两种方式: 第一种方式: //这句话是代表是显示明文密码 etPassword.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD); //这句话是代表是密文密码显示 etPassword.se...
使用MD5对明文密码进行加密
通常情况下,我们不希望任何人知道我们的密码。 当我们创建了用户以后,我们的个人信息将会存储在服务器数据库中,如果有人可以访问数据库,便可以轻易的拿到我们的用户名和密码等一系列重要数据。为防止这种情况,我们可以使用加密的方式对密码进行加密。 以下是StringUtils工具类,创建出来以后我们可以调用encrypt方法将password传入,并接受返回出来的心得newPassword
python+robotframework登录密码暗文显示问题之解
登录常见的明暗文问题处理方式之一;presskey与InputText
VUE 密码明暗文交互
输入框代码:   &amp;lt;input :type=&quot;inputType&quot; placeholder=&quot;钱包密码&quot; class=&quot;input-1&quot; v-model=&quot;password&quot;&amp;gt; 直接给利用vue的 :type 给定一个初始值    inputType 然后下方设定一个按钮  点击改变 inputType 的值就可以了 当然 这个按钮是需要绑定值的  因为vue 是以数据驱动...
【qduoj】C语言_凯撒密码
题干: 描述     据说最早的密码来自于罗马的凯撒大帝。消息加密的办法是:对消息原文中的每个字母,分别用该字母之后的第5个字母替换(例如:消息原文中的每个字母A都分别替换成字母F)。而你要获得消息原文,也就是要将这个过程反过来。 密码字母: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 原文字母:V W X Y Z A B C D...
EditText设置密码显示明文及隐藏切换
显示密码格式: mEditText.setTransformationMethod(PasswordTransformationMethod.getInstance()); 明文显示: mEditTex.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
android EditText 设置密码明文 密文 显示方法
在登录注册界面,用户常常要输入密码,密码显示有两种模式:明文显示和密文显示。这两种切换模式的方法如下:密文设置: EditText et = (EditText)findViewById(R.id.et); TransformationMethod method = PasswordTransformationMethod.getInstance(); et.setTransformationM
Android实现设置密码明文密文切换
需求:某种需求可能是这样的:设置密码的编辑框中有一只小眼睛,当编辑框中的密码为明文时,点击变成密文,反之~实现方法 edPassword.setTransformationMethod(HideReturnsTransformationMethod.getInstance());//显示 edPassword.setTransformationMethod(PasswordTransformatio
weex 修改input明文暗文
template> div class="wrapper" > div class="bg_div"> image :src="bgUrl" class="bg_img" >image> div> div class="logo_div"> image :src="headUrl" class="logo_img" >image>
swift 密码输入框明暗问切换
一、视图控件class ZJFieldView: UIView ,UITextFieldDelegate{    override init(frame: CGRect) {        super.init(frame: frame);        self.addSubview(self.leftImgView);        self.addSubview(self.centerFei...
AES加解密(优化版,明文密文相互转换)
AES加解密(优化版,明文密文相互转换)
维吉尼亚密码(C语言实现)
、实现维吉尼亚密码,用键盘接收明文和密钥,屏幕打印密文和解密后的明文。(必做) 2、实现单表替换密码,用键盘接收明文和密钥,屏幕打印替换表和密文。(选做) 3(选作)、在实现1的基础上,用维吉尼亚密码实现控制台对英文文本文件(注意明文和密文都以文件形式存在)的加解密 形式: cipher -e/-d key inputfile outputfile 说明:对于加密来说,输入文件名就是明文文件,对于解密来说,输入文件名就是密文文件,非明密文字符保留 控制台编程: int main(int argc, char *argv[ ]) 4、在实现3的基础上,实现控制台对所有文件(中英文文本、符号甚至任意的文件)的加解密,形式如3中规定 注意:文件的存在形式,文件读取方式和控制文件结束
关于密码框明文密文的心得
输入框密码的显示与隐藏 在逛博客的时候发现大家对密码的明文,密文切换有疑惑,正巧最近在做手机端页面的时候碰到了密码的显示与隐藏,在这里就跟小伙伴们分享下。 在这里我整理了两种方法,亲测有效这里写代码片 方法一 通过js改变input框的 type属性来切换明文,密文 这里需要注意 input框的属性修改 不能直接使用attr() html部分 &amp;lt;div class=&quot;f...
任意长度的字符串加密解密(DES)
基于DES任意长度字符串的加密和解密,MFC界面
mysql 密文转明文
MYSQL 4.1版本之前使用的是323方式加密 MYSQL 4.1之后使用SHA1加密 提供个可以解密SHA1的网站,只能破解纯数字的密码,字母和特殊字符就无能为力了 地址:https://crackstation.net/ 测试: mysql&amp;gt; select password('1234567890'); +-----------------------------------...
切换输入框内容为明文还是隐文
在那个图片的点击事件里进行切换就好,布局里默认写为隐文状态 private boolean istrue=false; img.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if(istrue){ i...
Vigenere多表加法加密分析
Vigenere多表加法加密分析
PowerShell: 隐藏明文密码
本文描述如何加密 PowerShell 中的敏感信息,从而避免敏感信息(诸如密码)在代码中被显式的展现出来。这里我们使用 ConvertFrom-SecureString 命令来完成加密操作,需要注意的是,如果我们没有指定Key,那么,将采用基于 Windows 内置的 DPAPI 进行数据的加密。这种情况下,原文的加密和解密必须在同一台机器上,且基于同一个User去进行。 ConvertFrom
密文和明文的转换
#include &amp;lt;stdio.h&amp;gt; #include &amp;lt;math.h&amp;gt; int main() { int i,t,m,n; printf(&quot;原文转密文请按1,密文转原文请按0\n&quot;); scanf(&quot;%d&quot;,&amp;amp;t); if(t==1) { char c[200]; printf(&quot;请输入明文:&quot;); scanf(...
二维易位——通过密钥对明文进行加密或对密文进行解密
这其实是湖大一个同学的作业,前几天我这个隔壁学校的被求助,然后翘了一节课帮她写出来的,若不是妹纸我才没那么积极呢[偷笑]。 所以,湖大的同学若果想要用这份代码交作业请慎重,以免老师追究。 现已知一份密文: hdqtrnyoenahauiniorpaiduaubidofdaletcndnnoertenteavcfhacukeatpv. fcyynatyneucusanedthrepetoctnhu
前端面试总结
面试题总结 一、基础班模块 基础部分 什么是HTML? 答: [ ] &amp;gt; ​ HTML并不是真正的的程序语言,他是一种 标 记 语 言 ,用来结构化和含义化你想要放 在web 网站上的那些内容。它由一系列的元素(elements)所组成,这些元素可以用来 封装你的内容中担任不同工作的各部分和各个角色。 什么是CSS? 答: [ ] &amp;gt; ​...
密码显示明文
android 密码显示明文,界面优美,可以暗文显示也可以明文
仿支付宝,微信密码输入框
网格输入框,自定长度,支持明文和暗文。
android开发中将EditText输入的明文与密文之间的切换
其实很简单,获取输入的之后,设置一个showPassword布尔值,然后进行判断。 很简单,代码如下: package com.kuaishouyin.activity; /** * 注册页面 */ import android.app.Activity; import android.content.Intent; import android.os.Bu
UITextField 密码明文及密文切换问题
1. 使用UITextField设置明文及密文之间切换后,光标的位置可能会出现偏移出错(因为密文方式占位符更宽一点)。这个应该是UITextField这个控件本身的问题,但这个问题在iOS10系统就没有了,好像苹果已经做了更改,下面的解决办法是针对除了iOS10系统适配的调整。 在明文/密文切换的事件里面,加多几句话: //显示和隐藏登录视图的密码。 -(void)sho
加密连接数据库明文密码
加密连接数据库密码
实现维吉尼亚密码,用键盘接收明文和密钥,屏幕打印密文和解密后的明文
实现维吉尼亚密码,用键盘接收明文和密钥,屏幕打印密文和解密后的明文
古典密码——vigenre多表代换密码
加密vigenre密码根据包含26张字符对应表的vigenre方阵(见文末图)来实现对字符串的加密
DES分组密码算法的加解密
DES分组密码算法的加解密,希望能帮到大家,
C++语言下支撑中文无限长度AES加解密算法实现
代码是通过使用C++语言实现的,实现了支持中文,无限长度的明文加密和解密.