c++运用ASCII对最长的英文单词词进行加密解密

|--------------C++学习(125)
从键盘读入一行字符,把其中的字母字符依次放在磁盘文件f2.dat中,再把它从磁盘文件读入程序,将其中的小写字母改写成大写字母,再存入磁盘文件f3.dat.
#include&iostream&
#include&fstream&
#include&cstdlib&
//save_to_file函数从键盘读入一行字符,并将其中的字母存入磁盘文件
void save_to_file()
ofstream outfile(&f2.dat&);
//定义输出文件流对象outfile,以输出方式打开磁盘文件f2.dat
if(!outfile)
cerr&&&open f2.dat error!&&&
char c[80];
cout&&&please input something:&&&
cin.getline(c,80);
//从键盘输入一行字符
for(int i=0;c[i]!=0;i++)//对字符逐个处理,直到遇到'/0'为止
if(c[i]&=65&&c[i]&=90||c[i]&=97&&c[i]&=122)//如果是字母字符
outfile.put(c[i]);
//将母字符存入磁盘文件f2.dat
cout&&c[i];
//同时将字母在显示器进行显示
outfile.close();
//关闭f2.dat文件
//get_from_file函数从磁盘读入字符,将其中的小写字母改为大写字母,然后存回
void get_from_file()
ifstream infile(&f2.dat&,ios::in);
//定义输入文件流outfile,以输入方式打开磁盘文件f2.dat
if(!infile)
cerr&&&open f2.dat error!&&&
ofstream outfile(&f3.dat&);
//定义输出文件流outfile,以输出方式打开磁盘文件f3.dat
if(!outfile)
cerr&&&open f3.dat error!&&&
while(infile.get(ch)) //当读取成功时,执行下面的符合语句
if(ch&=97&&ch&=122) //ch为小写字母
//将小写字母转化为大写字母
outfile.put(ch);
//将该大写字母存入磁盘文件f3.dat
//同时在显示器输出
infile.close();
outfile.close();
int main()
save_to_file();
//调用save_to_file(),从键盘输入数据并保存到磁盘
get_from_file();
//调用get_from_file(),从磁盘打开文件,并操作,然后写回磁盘
输出结果:
please input something:
SDJKJKkjkjkl232343KJKLJKJKLJsjkdfjkdsjKLJKJKL
SDJKJKkjkjklKJKLJKJKLJsjkdfjkdsjKLJKJKL
SDJKJKKJKJKLKJKLJKJKLJSJKDFJKDSJKLJKJKL
第一行为我输入的数据,第二行是f2.dat中的数据,第三行是f3.dat中的数据。
我们还可以通过type命令,查看f2.dat和f3.dat中的数据。
C:\Users\hp&cd /d e:\test
e:\test&dir
驱动器 E 中的卷是 Work
卷的序列号是 0FBA-069C
e:\test 的目录
1,661 one.cpp
6,560,425 one.exe
6,562,164 字节
2 个目录 207,104,806,912 可用字节
e:\test&type f2.dat
SDJKJKkjkjklKJKLJKJKLJsjkdfjkdsjKLJKJKL
e:\test&type f3.dat
SDJKJKKJKJKLKJKLJKJKLJSJKDFJKDSJKLJKJKL
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:540195次
积分:8452
积分:8452
排名:第2117名
原创:274篇
转载:45篇
评论:78条
电子邮箱:
新浪微博:@丁棒儿
知乎:@丁棒儿Debby
(26)(7)(8)(1)(7)(6)(16)(10)(17)(9)(30)(23)(26)(2)(18)(27)(21)(17)(11)(3)(21)  字符常量
  用一对单引号中包括的一个字符,被称为字符常量,如'a','Y'或者'$',这种字符常量和字符类型是完全匹配的。
  在内存当中,字符常量的值其实就是该字符对应的ASCII码,但因为类型的限制,只占据一个字节的大小。
  字符串常量
  用一对双引号中包括的任意个字符,被称为字符串常量,如&abcd&。限于字符串常量本身概念的复杂,这里只做最简单的说明。
  ASCII码
  之前我们曾经提到了ASCII码,这是一种对常用英文字符的编码方案,现在已经是通用的国际标准。最基本的ASCII码有128个,编号为0~127,后来加入了扩展ASCII码,编号为128~255,但在C/C++中一般我们讨论的都是基本的ASCII码。
  ASCII码的前32位(编号为0~31)被称为控制字符,这类字符有着特定的功能,但无法用直接表述出来(如换行符、退格符、响铃等),另外的96个字符就都是我们平时很熟悉的符号了,包括52个英文字母、10个阿拉伯数字以及众多标点符号等。
  一般说来,我们只需要记住三个字符的ASCII值就足够了,它们是:字符A的值是65,字符a的值是97,字符0的值是48。
  字符类型和整数类型的区别
  实际上,字符类型完全可以看成是比short更短的整数类型,因为它存放的内容也是整数。但因为范围只有0~127,所以只需要一个字节即可。
  与此同时,字符类型的输入和输出有自己独特的方式,这才是它和整数类型的主要区别。
  整数类型和字符类型之间相互转换很方便,这部分内容将在后续的专题当中解释。
  转义字符
  转义字符是初学者很头疼的地方,其实只要掌握了规则,是非常简单的。
  当我们需要表示一个字符,而这个字符不方便或者无法直接表述的时候,就需要通过转义字符来间接表述。
  转义字符一定是通过字符'\'开始的,它有三种不同的形式。
  1、常用的转义字符:当我们需要表达控制字符的时候,往往需要通过转义字符来进行。这其中有几个转义字符是非常常用的,必须记住。
  '\n':换行符,在输出的时候经常需要另起一行;
  '\t':制表符,在输出的时候可以用来排版;
  '\\':用来表示字符\本身,因为\字符已经有了特殊含义,要表示它自己就必须这样表示;
  '\'':单引号虽然可以直接表示,但因为字符常量是用一对单引号作为包括元素的。如果直接书写''',系统会成为前两个单引号是一对,这样就会带来错误;
  '\"':双引号,原理同上,在字符串常量中是不能直接使用双引号的。
  2、如果一个符号,本身不能直接表述,又没有专门的缩写形式,那么可以用\nnn(1~3位的8进制数值)来表示。
  3、如果一个符号,本身不能直接表述,又没有专门的缩写形式,那么可以用\xnn(1~2位的16进制数值)来表示。
  注意一:这里的过程是计算出1~3位8进制值或者1~2位的16进制值所代表的10进制数值,然后这个数值所对应的ASCII码即为所需要表示的字符,很显然这两种方法适合任何字符的表示。
  注意二:这里的1~3位是指,能凑满3位就凑满3位,否则能凑满2位就凑满2位,并以此往下类推。在计算字符串中字符的数目时,这个问题很容易犯错误,在今后遇到该问题时,我们再做详细讨论。
  示例:如下三个变量其实都表示的是字符A,原因请自己思考。
char c1 = 'A';
char c2 = '\101';
char c3 = '\x41';
  C/C++中的三个0
  在C/C++中有三个0,初学者很容易混淆,其实只要分清楚各自的特点也很容易辨别。
  1、数值0:其值为0,占4个字节;
  2、字符'0':存放的是字符'0'的ASCII码,值为48,占1个字节
  3、字符'\0':'\0'是指ASCII值为0的字符,也就是ASCII码表里面的第1个符号。很明显其数值也为0,但因为是字符,占1个字节。在后面的内容当中有重要的意义。
阅读(...) 评论()下面的代码,是用C#加密字符串和用C++加密、解密一个字符串,两种语言加密后的密文,解密后的明文都是相同的。
using System.Collections.G
using System.D
using System.D
using System.L
using System.T
using System.Windows.F
using System.Security.C
using System.IO;
................................
&&private void button1_Click(object sender, EventArgs e)
& & & & & & string clearText = textBox1.Text.Trim(); & & & & & & & & & & & & & & & & & & & & / /待加密的字符串
& & & & & & byte[] clearBytes = Encoding.ASCII.GetBytes(clearText);
& & & & & & using (var encryptor = RijndaelManaged.Create())
& & & & & & {
& & & & & & & & encryptor.KeySize = 128;
& & & & & & & & encryptor.Padding = PaddingMode.Z
& & & & & & & & encryptor.Mode = CipherMode.CFB;
& & & & & & & & encryptor.Key = Encoding.ASCII.GetBytes(&&);
& & & & & & & & encryptor.IV = Encoding.ASCII.GetBytes(&3456&);
& & & & & & & & using (MemoryStream ms = new MemoryStream())
& & & & & & & & {
& & & & & & & & & & using (CryptoStream cs = new CryptoStream(ms, encryptor.CreateEncryptor(), CryptoStreamMode.Write))
& & & & & & & & & & {
& & & & & & & & & & & & cs.Write(clearBytes, 0, clearBytes.Length);
& & & & & & & & & & & & cs.Close();
& & & & & & & & & & }
& & & & & & & & & & Array.Copy(ms.ToArray(), clearBytes, clearBytes.Length);
& & & & & & & & & & clearText = Convert.ToBase64String(clearBytes);
& & & & & & & & }
& & & & & & }
& & & & & & textBox2.Text = clearT
& & & & & & //return clearT
...................................................................................................................................................................................................................................
**********************************************************************************************************************************************************************
C++ 加密、解密代码:
使用Crypto++库,需要在工程中包含库的头文件和静态链接库,头文件和静态链接库,到网上下载后编译
#include &stdafx.h&
#include &iostream&
#include &randpool.h&
#include &rsa.h&
#include &hex.h&
#include &files.h&
#include &config.h&
#include &stdcpp.h&
#include &modes.h&
#include&base64.h&
using namespace CryptoPP;
#pragma comment(lib, &cryptlib.lib&)
string encrypt(const std::string& str_in, const std::string& key, const std::string& iv)
std::string str_
CryptoPP::CFB_Mode&CryptoPP::AES&::Encryption encryption((byte*)key.c_str(), key.length(), (byte*)iv.c_str());
CryptoPP::StringSource encryptor(str_in, true,
new CryptoPP::StreamTransformationFilter(encryption,
new CryptoPP::Base64Encoder(
new CryptoPP::StringSink(str_out),
false // do not append a newline
return str_
//------------------------
string decrypt(const std::string& str_in, const std::string& key, const std::string& iv)
std::string str_
CryptoPP::CFB_Mode&CryptoPP::AES&::Decryption decryption((byte*)key.c_str(), key.length(), (byte*)iv.c_str());
CryptoPP::StringSource decryptor(str_in, true,
new CryptoPP::Base64Decoder(
new CryptoPP::StreamTransformationFilter(decryption,
new CryptoPP::StringSink(str_out)
return str_
// Main函数
void main()
std::string str = &345&; &//加密的字符串
std::string key = &&; // 32 bytes
std::string iv = &3456&; // 16 bytes
std::string str_encrypted = &encrypt(str, key, iv); & //加密后密文
std::string str_decrypted = decrypt(str_encrypted, key, iv); &//解密后明文
std::cout && &str_encrypted: & && str_encrypted && std::
std::cout && &str_decrypted: & && str_decrypted && std::
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:11859次
排名:千里之外
(1)(1)(4)(1)(1)(1)(1) 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
编程实现对键盘输入的英文名句子进行加密。用加密方法为,
下载积分:1500
内容提示:编程实现对键盘输入的英文名句子进行加密。用加密方法为,
文档格式:DOC|
浏览次数:292|
上传日期: 02:21:34|
文档星级:
全文阅读已结束,如果下载本文需要使用
 1500 积分
下载此文档
该用户还上传了这些文档
编程实现对键盘输入的英文名句子进行加密。用加密方法为,
官方公共微信扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
下载作业帮安装包
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
C++编程问题求解编写一个程序,将字符串“Love”译成密码,译码方法采用替换加密法,其加密规则是:将原来的字母用字母表中其后面的第N个字母的来替换,N由用户输入。如果N=3,字母c就用f来替换,字母y用b来替换。提示:(1)分别用4个字符变量来存储‘L’、‘o’、‘v’和‘e’。(2)加密公式为:  如果x为大写字母,密文y为
y=((x-‘A’)+N)%26+‘A’;  如果x为小写字母,密文y为
y=((x-‘a’)+N)%26+‘a’;  其中N为密钥,为一整数。
注意,其中引号在程序中应为英文的单引号!!!程序运行结果如下:Please input the key: 3The original word is LoveThe encrypted word is Oryh注意,其中Oryh是加密后的单词。
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
#includeint main(){ char cypher[4]="Love",code[4]; const int N=26; int i=0,n; printf("please input the keys :\n"); scanf("%d",&n); printf("The original word is %s \n", cypher); for(;i<4;i++) {
if(cypher[i]>'Z')
cypher[i] =((cypher[i] - 'a')+n)%N+'a';
cypher[i]=((cypher[i] - 'A')+n)%N+'A'; } printf(("The encrypted word is %s , cypher); return 0;}
为您推荐:
扫描下载二维码

我要回帖

更多关于 最长的英文单词 的文章

 

随机推荐