ciphertext是什么意思
Drive 盘符 一些计算机英语:一、硬件类(Hardware) 二、软件类(Software) 三、网络类(Network) 四、其它 CPU(Center Processor Unit)中央处理单元 mainboard主板 RAM(random access memory)随机存储器(内存) ROM(Read Only Memory)只读存储器 Floppy Disk软盘 Hard Disk硬盘 CD-ROM光盘驱动器(光驱) monitor监视器 keyboard键盘 mouse鼠标 chip芯片 CD-R光盘刻录机 HUB集线器 Modem= MOdulator-DEModulator,调制解调器 P-P(Plug and Play)即插即用 UPS(Uninterruptable Power Supply)不间断电源 BIOS(Basic-input-Output System)基本输入输出系统 CMOS(Complementary Metal-Oxide-Semiconductor)互补金属氧化物半导体 setup安装 uninstall卸载 wizzard向导 OS(Operation Systrem)操作系统 OA(Office AutoMation)办公自动化 exit退出 edit编辑 copy复制 cut剪切 paste粘贴 delete删除 select选择 find查找 select all全选 replace替换 undo撤消 redo重做 program程序 license许可(证) back前一步 next下一步 finish结束 folder文件夹 Destination Folder目的文件夹 user用户 click点击 double click双击 right click右击 settings设置 update更新 release发布 data数据 data base数据库 DBMS(Data Base Manege System)数据库管理系统 view视图 insert插入 object对象 configuration配置 command命令 document文档 POST(power-on-self-test)电源自检程序 cursor光标 attribute属性 icon图标 service pack服务补丁 option pack功能补丁 Demo演示 short cut快捷方式 exception异常 debug调试 previous前一个 column行 row列 restart重新启动 text文本 font字体 size大小 scale比例 interface界面 function函数 access访问 manual指南 active激活 computer language计算机语言 menu菜单 GUI(graphical user interfaces )图形用户界面 template模版 page setup页面设置 password口令 code密码 print preview打印预览 zoom in放大 zoom out缩小 pan漫游 cruise漫游 full screen全屏 tool bar工具条 status bar状态条 ruler标尺 table表 paragraph段落 symbol符号 style风格 execute执行 graphics图形 image图像 Unix用于服务器的一种操作系统 Mac OS苹果公司开发的操作系统 OO(Object-Oriented)面向对象 virus病毒 file文件 open打开 colse关闭 new新建 save保存 exit退出 clear清除 default默认 LAN局域网 WAN广域网 Client/Server客户机/服务器 ATM( Asynchronous Transfer Mode)异步传输模式 Windows NT微软公司的网络操作系统 Internet互联网 WWW(World Wide Web)万维网 protocol协议 HTTP超文本传输协议 FTP文件传输协议 Browser浏览器 homepage主页 Webpage网页 website网站 URL在Internet的WWW服务程序上 用于指定信息位置的表示方法 Online在线 Email电子邮件 ICQ网上寻呼 Firewall防火墙 Gateway网关 HTML超文本标识语言 hypertext超文本 hyperlink超级链接 IP(Address)互联网协议(地址) SearchEngine搜索引擎 TCP/IP用于网络的一组通讯协议 Telnet远程登录 IE(Internet Explorer)探索者(微软公司的网络浏览器) Navigator引航者(网景公司的浏览器) multimedia多媒体 ISO国际标准化组织 ANSI美国国家标准协会 able 能 activefile 活动文件 addwatch 添加监视点 allfiles 所有文件 allrightsreserved 所有的权力保留 altdirlst 切换目录格式 andfixamuchwiderrangeofdiskproblems 并能够解决更大范围内的磁盘问题 andotherinFORMation 以及其它的信息 archivefileattribute 归档文件属性 assignto 指定到 autoanswer 自动应答 autodetect 自动检测 autoindent 自动缩进 autosave 自动存储 availableonvolume 该盘剩余空间 badcommand 命令错 badcommandorfilename 命令或文件名错 batchparameters 批处理参数 binaryfile 二进制文件 binaryfiles 二进制文件 borlandinternational borland国际公司 bottommargin 页下空白 bydate 按日期 byextension 按扩展名 byname 按名称 bytesfree 字节空闲 callstack 调用栈 casesensitive 区分大小写 causespromptingtoconfirmyouwanttooverwritean 要求出现确认提示,在你想覆盖一个 centralpointsoftwareinc central point 软件股份公司 changedirectory 更换目录 changedrive 改变驱动器 changename 更改名称 characterset 字符集 checkingfor 正在检查 checksadiskanddisplaysastatusreport 检查磁盘并显示一个状态报告 chgdrivepath 改变盘/路径 china 中国 chooseoneofthefollowing 从下列中选一项 clearall 全部清除 clearallbreakpoints 清除所有断点 clearsanattribute 清除属性 clearscommandhistory 清除命令历史 clearscreen 清除屏幕 closeall 关闭所有文件 codegeneration 代码生成 colorpalette 彩色调色板 commandline 命令行 commandprompt 命令提示符 compressedfile 压缩文件 configuresaharddiskforusewithmsdos 配置硬盘,以为 MS-DOS 所用 conventionalmemory 常规内存 copiesdirectoriesandsubdirectoriesexceptemptyones 拷贝目录和子目录,空的除外 copiesfileswiththearchiveattributeset 拷贝设置了归档属性的文件 copiesoneormorefilestoanotherlocation 把文件拷贝或搬移至另一...
...按照一定的方法,对每个字符加密后存放到另一个密文文件ciphertextt...
MCRYPT_MODE_CBC). $ciphertext;# encode the resulting cipher text so it can be represented by a string$ciphertext_base64 = base64_encode($ciphertext), iv_size should be created using mcrypt_get_iv_size()$iv_dec = substr($ciphertext_dec;;$plaintext = ";;# retrieves the cipher text (everything except the $iv_size in the front)$ciphertext_dec = substr($ciphertext_dec;This string was AES-256 / CBC / ZeroBytePadding encrypted?>.".6的key长度要求是32字节的;$iv = mcrypt_create_iv($iv_size;echo $ciphertext_base64 ;\n"# creates a cipher text compatible with AES (Rijndael block size = 128)# to keep the text confidential # only suitable for encoded input that never ends with value 00h# (because of default zero padding)$ciphertext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key,$plaintext, MCRYPT_MODE_CBC, $iv);# prepend the IV for it to be available for decryption$ciphertext = $iv , $iv_size);# may remove 00h valued characters from end of plain text$plaintext_dec = mcrypt_decrypt(MCRYPT_RIJNDAEL_128;, "n";# === WARNING ===# Resulting cipher text has no integrity or authenticity added# and is not protected against padding oracle attacks.# --- DECRYPTION ---$ciphertext_dec = base64_decode($ciphertext_base64);# retrieves the IV;\n", 192# and 256 respectively$key_size = strlen($key),$ciphertext_dec, $key, MCRYPT_MODE_CBC, $iv_dec);echo $plaintext_dec . "php5, 0, $iv_size): " . $key_size . ";# create a random IV to use with CBC encoding$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128;), 24 or 32 byte keys for AES-128;# show key size use either 16;echo "Key size?php# --- ENCRYPTION ---# the key should be random binary, use scrypt, bcrypt or PBKDF2 to# convert a string into a key# key is specified using hexadecimal$key = pack('H*'. "\,你这个明显不满足要求的;bcb04b7e103a0cd8b54763051cef08bc55abe029fdebae5e1d417e2ffb2a00a3"。
参考以下写法:<, MCRYPT_RAND)
为什么 CryptoJS DES 加密的结果和 Java DES 不一样
最近需要对数据进行加密/解密, 因此选用了CryptoJS库, 对数据做DES算法的加密/解密首选查看官方示例, 将密文进行Base64编码, 掉进一个大坑 var encrypted = CryptoJS.DES.encrypt("Message", "Secret Passphrase"); // ciphertext changed every time you run it // 加密的结果不应该每次都是一样的吗? console.log(encrypted.toString(), encrypted.ciphertext.toString(CryptoJS.enc.Base64)); var decrypted = CryptoJS.DES.decrypt(encrypted, "Secret Passphrase"); console.log(decrypted.toString(CryptoJS.enc.Utf8));对这些加密算法不了解, 只能求助Googledes encrypion: js encrypted value does not match the java encrypted valueIn cryptoJS you have to convert the key to hex and useit as word just like above (otherwise it will be considered as passphrase)For the key, when you pass a string, it's treated as a passphrase and used to derive an actual key and IV. Or you can pass a WordArray that represents the actual key.原来是我指定key的方式不对, 直接将字符串做为参数, 想当然的以为这就是key, 其实不然, CryptoJS会根据这个字符串算出真正的key和IV(各种新鲜名词不解释, 问我也没用, 我也不懂 -_-")那么我们只需要将key和iv对应的字符串转成CryptoJS的WordArray类型, 在DES加密时做为参数传入即可, 这样对Message这个字符串加密, 每次得到的密文都是YOa3le0I+dI= var keyHex = CryptoJS.enc.Utf8.parse('abcd1234'); var ivHex = CryptoJS.enc.Utf8.parse('inputvec'); var encrypted = CryptoJS.DES.encrypt('Message', keyHex, { iv: ivHex });这样是不是就万事OK了? 哪有, 谁知道这坑是一个接一个啊.我们再试试Java这边的DES加密是不是和这个结果一样, 具体实现请参考Simple Java Class to DES Encrypt Strings果真掉坑里了, Java通过DES加密Message这个字符串得到的结果是8dKft9vkZ4I=和CryptoJS算出来的不一样啊...亲继续求助GoogleC# and Java DES Encryption value are not identicalSunJCE provider uses ECB as the default mode, and PKCS5Padding as the default padding scheme for DES.(JCA Doc)This means that in the case of the SunJCE provider, Cipher c1 = Cipher.getInstance("DES/ECB/PKCS5Padding");and Cipher c1 = Cipher.getInstance("DES");are equivalent statements.原来是CryptoJS进行DES加密时, 默认的模式和padding方式和Java默认的不一样造成的, 必须使用ECB mode和PKCS5Padding, 但是CryptoJS中只有Pkcs7, 不管了, 试试看... var keyHex = CryptoJS.enc.Utf8.parse('abcd1234'); var encrypted = CryptoJS.DES.encrypt('Message', keyHex, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }); console.log(encrypted.toString(), encrypted.ciphertext.toString(CryptoJS.enc.Base64));咦...使用Pkcs7能得到和Java DES一样的结果了, 哇塞...好神奇那我们试试统一Java也改成Cipher.getInstance("DES/ECB/PKCS7Padding")试试, 结果得到一个大大的错误Error:java.security.NoSuchAlgorithmException: Cannot find any provider supporting DES/ECB/PKCS7Padding没办法, 继续Googlejava.security.NoSuchAlgorithmException: Cannot find any provider supporting AES/ECB/PKCS7PADDINGI will point out that PKCS#5 and PKCS#7 actually specify exactly the same type of padding (they are the same!), but it's called #5 when used in this context. :)这位大侠给出的解释是: PKCS#5和PKCS#7是一样的padding方式, 对加密算法一知半解, 我也只能暂且认可这个解释了.忙完了DES的加密, 接下来就是使用CryptoJS来解密了. 我们需要直接解密DES加密后的base64密文字符串. CryptoJS好像没有提供直接解密DES密文字符串的方法啊, 他的整个加密/解密过程都是内部自己在玩, 解密时需要用到加密的结果对象, 这不是坑我吗?只好研究下CryptoJS DES加密后返回的对象, 发现有一个属性ciphertext, 就是密文的WordArray, 那么解密的时候, 我们是不是只要提供这个就行了呢? var keyHex = CryptoJS.enc.Utf8.parse('abcd1234'); // direct decrypt ciphertext var decrypted = CryptoJS.DES.decrypt({ ciphertext: CryptoJS.enc.Base64.parse('8dKft9vkZ4I=') }, keyHex, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }); console.log(decrypted.toString(CryptoJS.enc.Utf8));果不其然, 到此为止, 问题全部解决, 豁然开朗...完整代码请参考CryptoJS-DES.htmlUse CryptoJS encrypt message by DES and direct decrypt ciphertext, compatible with Java Cipher.getInstance("DES")
invalid stack frame怎么解决
使用开源技术ireport 打印时报错:invalid stack frame. 内存问题最最不指望出现的问题! 程序代码: try { JasperReport jasperReport = (JasperReport) JRLoader .loadObject(reportFile.getPath()); jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, conn); // 将这个报表结果存入session中给后来的导出报表使用。
request.getSession().setAttribute("jasperReport", jasperPrint); }catch (JRException e) { response.setContentType("text/html"); PrintWriter out = response.getWriter(); ..... 呵呵,程序逻辑上没问题。
最可疑的地方: JasperReport jasperReport = (JasperReport) JRLoader .loadObject(reportFile.getPath()); 重新发布程序,问题解决。
其实我只想证实我的想法,ireport开发工具生成.jasper文件需要重新发布程序,否则在"C:Program Filesapache-tomcat-6.0.16webappsfuNan_webreportiReportHoliday.jasper"找不到这个文件。
呵呵,问题也不是很艰巨嘛!关键是思路
非对称加密和对称加密的区别
(一)对称加密(Symmetric Cryptography)对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key),这种方法在密码学中叫做对称加密算法。
对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中。
对称加密通常使用的是相对较小的密钥,一般小于256 bit。
因为密钥越大,加密越强,但加密与解密的过程越慢。
如果你只用1 bit来做这个密钥,那黑客们可以先试着用0来解密,不行的话就再用1解;但如果你的密钥有1 MB大,黑客们可能永远也无法破解,但加密和解密的过程要花费很长的时间。
密钥的大小既要照顾到安全性,也要照顾到效率,是一个trade-off。
2000年10月2日,美国国家标准与技术研究所(NIST--American National Institute of Standards and Technology)选择了Rijndael算法作为新的高级加密标准(AES--Advanced Encryption Standard)。
.NET中包含了Rijndael算法,类名叫RijndaelManaged,下面举个例子。
加密过程:private string myData = "hello"; private string myPassword = "OpenSesame"; private byte[] cipherText; private byte[] salt = { 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x5, 0x4, 0x3, 0x2, 0x1, 0x0 };private void mnuSymmetricEncryption_Click(object sender, RoutedEventArgs e) { var key = new Rfc2898DeriveBytes(myPassword, salt); // Encrypt the data. var algorithm = new RijndaelManaged(); algorithm.Key = key.GetBytes(16); algorithm.IV = key.GetBytes(16); var sourceBytes = new System.Text.UnicodeEncoding().GetBytes(myData); using (var sourceStream = new MemoryStream(sourceBytes)) using (var destinationStream = new MemoryStream()) using (var crypto = new CryptoStream(sourceStream, algorithm.CreateEncryptor(), CryptoStreamMode.Read)) { moveBytes(crypto, destinationStream); cipherText = destinationStream.ToArray(); } MessageBox.Show(String.Format("Data:{0}{1}Encrypted and Encoded:{2}", myData, Environment.NewLine, Convert.ToBase64String(cipherText))); } private void moveBytes(Stream source, Stream dest) { byte[] bytes = new byte[2048]; var count = source.Read(bytes, 0, bytes.Length); while (0 != count) { dest.Write(bytes, 0, count); count = source.Read(bytes, 0, bytes.Length); } }解密过程:private void mnuSymmetricDecryption_Click(object sender, RoutedEventArgs e) { if (cipherText == null) { MessageBox.Show("Encrypt Data First!"); return; } var key = new Rfc2898DeriveBytes(myPassword, salt); // Try to decrypt, thus showing it can be round-tripped. var algorithm = new RijndaelManaged(); algorithm.Key = key.GetBytes(16); algorithm.IV = key.GetBytes(16); using (var sourceStream = new MemoryStream(cipherText)) using (var destinationStream = new MemoryStream()) using (var crypto = new CryptoStream(sourceStream, algorithm.CreateDecryptor(), CryptoStreamMode.Read)) { moveBytes(crypto, destinationStream); var decryptedBytes = destinationStream.ToArray(); var decryptedMessage = new UnicodeEncoding().GetString( decryptedBytes); MessageBox.Show(decryptedMessage); } }对称加密的一大缺点是密钥的管理与分配,换句话说,如何把密钥发送到需要解密你的消息的人的手里是一个问题。
在发送密钥的过程中,密钥有很大的风险会被黑客们拦截。
现实中通常的做法是将对称加密的密钥进行非对称加密,然后传送给需要它的人。
(二)非对称加密(Asymmetric Cryptography)1976年,美国学者Dime和Henman为解决信息公开传送和密钥管理问题,提出一种新的密钥交换协议,允许在不安全的媒体上的通讯双方交换信息,安全地达成一致的密钥,这就是“公开密钥系统”。
相对于“对称加密算法”这种方法也叫做“非对称加密算法”。
非对称加密为数据的加密与解密提供了一个非常安全的方法,它使用了一对密钥,公钥(public key)和私钥(private key)。
私钥只能由一方安全保管,不能外泄,而公钥则可以发给任何请求它的人。
非对称加密使用这对密钥中的一个进行加密,而解密则需要另一个密钥。
比如,你向银行请求公钥,银行将公钥发给你,你使用公钥对消息加密,那么只有私钥的持有人--银行才能对你的消息解密。
与对称加密不同的是,银行不需要将私钥通过网络发送出去,因此安全性大大提高。
目前最常用的非对称加密算法是RSA算法,是Rivest, Shamir, 和Adleman于1978年发明,他们那时都是在MIT。
.NET中也有RSA算法,请看下面的例子:加密过程:private byte[] rsaCipherText; private void mnuAsymmetricEncryption_Click(object sender, RoutedEventArgs e) { var rsa = 1; // Encrypt the data. var cspParms = new CspParameters(rsa); cspParms.Flags = CspProviderFlags....
text
这是我们老师给的DES算法,肯定没问题,现在main()函数是空的,只要根据自己的需要将main()函数再填充一下就能运行,可以对文件及文本加密、解密,可能由于百度回答问题的文本框有些小,有些本来在同一行代码的可能分到了两行,如果有这种问题,自己再调一下吧 #include #include "stdio.h" #include "memory.h" #include "time.h" #include "stdlib.h" #define PLAIN_FILE_OPEN_ERROR -1 #define KEY_FILE_OPEN_ERROR -2 #define CIPHER_FILE_OPEN_ERROR -3 #define OK 1 typedef char ElemType; /*初始置换表IP*/ int IP_Table[64] = { 57,49,41,33,25,17,9,1, 59,51,43,35,27,19,11,3, 61,53,45,37,29,21,13,5, 63,55,47,39,31,23,15,7, 56,48,40,32,24,16,8,0, 58,50,42,34,26,18,10,2, 60,52,44,36,28,20,12,4, 62,54,46,38,30,22,14,6}; /*逆初始置换表IP^-1*/ int IP_1_Table[64] = {39,7,47,15,55,23,63,31, 38,6,46,14,54,22,62,30, 37,5,45,13,53,21,61,29, 36,4,44,12,52,20,60,28, 35,3,43,11,51,19,59,27, 34,2,42,10,50,18,58,26, 33,1,41,9,49,17,57,25, 32,0,40,8,48,16,56,24}; /*扩充置换表E*/ int E_Table[48] = {31, 0, 1, 2, 3, 4, 3, 4, 5, 6, 7, 8, 7, 8,9,10,11,12, 11,12,13,14,15,16, 15,16,17,18,19,20, 19,20,21,22,23,24, 23,24,25,26,27,28, 27,28,29,30,31, 0}; /*置换函数P*/ int P_Table[32] = {15,6,19,20,28,11,27,16, 0,14,22,25,4,17,30,9, 1,7,23,13,31,26,2,8, 18,12,29,5,21,10,3,24}; /*S盒*/ int S[8][4][16] = /*S1*/ {{{14,4,13,1,2,15,11,8,3,10,6,12,5,9,0,7}, {0,15,7,4,14,2,13,1,10,6,12,11,9,5,3,8}, {4,1,14,8,13,6,2,11,15,12,9,7,3,10,5,0}, {15,12,8,2,4,9,1,7,5,11,3,14,10,0,6,13}}, /*S2*/ {{15,1,8,14,6,11,3,4,9,7,2,13,12,0,5,10}, {3,13,4,7,15,2,8,14,12,0,1,10,6,9,11,5}, {0,14,7,11,10,4,13,1,5,8,12,6,9,3,2,15}, {13,8,10,1,3,15,4,2,11,6,7,12,0,5,14,9}}, /*S3*/ {{10,0,9,14,6,3,15,5,1,13,12,7,11,4,2,8}, {13,7,0,9,3,4,6,10,2,8,5,14,12,11,15,1}, {13,6,4,9,8,15,3,0,11,1,2,12,5,10,14,7}, {1,10,13,0,6,9,8,7,4,15,14,3,11,5,2,12}}, /*S4*/ {{7,13,14,3,0,6,9,10,1,2,8,5,11,12,4,15}, {13,8,11,5,6,15,0,3,4,7,2,12,1,10,14,9}, {10,6,9,0,12,11,7,13,15,1,3,14,5,2,8,4}, {3,15,0,6,10,1,13,8,9,4,5,11,12,7,2,14}}, /*S5*/ {{2,12,4,1,7,10,11,6,8,5,3,15,13,0,14,9}, {14,11,2,12,4,7,13,1,5,0,15,10,3,9,8,6}, {4,2,1,11,10,13,7,8,15,9,12,5,6,3,0,14}, {11,8,12,7,1,14,2,13,6,15,0,9,10,4,5,3}}, /*S6*/ {{12,1,10,15,9,2,6,8,0,13,3,4,14,7,5,11}, {10,15,4,2,7,12,9,5,6,1,13,14,0,11,3,8}, {9,14,15,5,2,8,12,3,7,0,4,10,1,13,11,6}, {4,3,2,12,9,5,15,10,11,14,1,7,6,0,8,13}}, /*S7*/ {{4,11,2,14,15,0,8,13,3,12,9,7,5,10,6,1}, {13,0,11,7,4,9,1,10,14,3,5,12,2,15,8,6}, {1,4,11,13,12,3,7,14,10,15,6,8,0,5,9,2}, {6,11,13,8,1,4,10,7,9,5,0,15,14,2,3,12}}, /*S8*/ {{13,2,8,4,6,15,11,1,10,9,3,14,5,0,12,7}, {1,15,13,8,10,3,7,4,12,5,6,11,0,14,9,2}, {7,11,4,1,9,12,14,2,0,6,10,13,15,3,5,8}, {2,1,14,7,4,10,8,13,15,12,9,0,3,5,6,11}}}; /*置换选择1*/ int PC_1[56] = {56,48,40,32,24,16,8, 0,57,49,41,33,25,17, 9,1,58,50,42,34,26, 18,10,2,59,51,43,35, 62,54,46,38,30,22,14, 6,61,53,45,37,29,21, 13,5,60,52,44,36,28, 20,12,4,27,19,11,3}; /*置换选择2*/ int PC_2[48] = {13,16,10,23,0,4,2,27, 14,5,20,9,22,18,11,3, 25,7,15,6,26,19,12,1, 40,51,30,36,46,54,29,39, 50,44,32,46,43,48,38,55, 33,52,45,41,49,35,28,31}; /*对左移次数的规定*/ int MOVE_TIMES[16] = {1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1}; int ByteToBit(ElemType ch,ElemType bit[8]); int BitToByte(ElemType bit[8],ElemType *ch); int Char8ToBit64(ElemType ch[8],ElemType bit[64]); int Bit64ToChar8(ElemType bit[64],ElemType ch[8]); int DES_MakeSubKeys(ElemType key[64],ElemType subKeys[16][48]); int DES_PC1_Transform(ElemType key[64], ElemType tempbts[56]); int DES_PC2_Transform(ElemType key[56], ElemType tempbts[48]); int DES_ROL(ElemType data[56], int time); int DES_IP_Transform(ElemType data[64]); int DES_IP_1_Transform(ElemType data[64]); int DES_E_Transform(ElemType data[48]); int DES_P_Transform(ElemType data[32]); int DES_SBOX(ElemType data[48]); int DES_XOR(ElemType R[48], ElemType L[48],int count); int DES_Swap(ElemType left[32],ElemType right[32]); int DES_EncryptBlock(ElemType plainBlock[8], ElemType subKeys[16][48], ElemType cipherBlock[8]); int DES_DecryptBlock(ElemType cipherBlock[8], ElemType subKeys[16][48], ElemType plainBlock[8]); int DES_Encrypt(char *plainFile, char *keyStr,char *cipherFile); int DES_Decrypt(char *cipherFile, char *keyStr,char *plainFile); /*字节转换成二进制*/ int ByteToBit(ElemType ch, ElemType bit[8]){ int cnt; for(cnt = 0;cnt *(bit+cnt) = (ch>>cnt)&1; } return 0; } /*二进制转换成字节*/ int BitToByte(ElemType bit[8],ElemType *ch){ int cnt; for(cnt = 0;cnt *ch |= *(bit + cnt) } return 0; } /*将长度为8的字符串转为二进制位串*/ int Char8ToBit64(ElemType ch[8],ElemType bit[64]){ int cnt; for(cnt = ...
转载请注明出处51数据库 » invalid ciphertext p