- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个文件 encode.c,它进行一些按位操作来对第一个 .txt 文件中的文本进行编码。它会将编码后的文本放入 .txt 文件 2。并且有一个关键字来编码 .txt 文件...
ENCODE.c 文件如下:
/* C 语言 - ascii 文本文件的 UNIX 风格加密程序 - (c) Eike Falk Anderson, 2013*/
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#define PUSAGE fprintf(stderr,"USAGE: %s [source file] [destination file] [key]\n\n",argv[0]) /* predefined error/usage message */
/* compile with clang encode.c -o encode
when you run this program it takes three inputs/parameters:
1. the name of your sourse text file (the ASCII text file you want to encode)
2. the name of your destination text file (the file that will have the encoded text in it)
3. the keyword (the "password" for the encoded file)
example:
./encode source.txt dest.txt secret
*/
int main(int argc,char *argv[]) /* argument vector 0 - program-name, argv 1 - source string, argv 2 - dest string, argv 3 - key string */
{
int counter; /* a counter variable for counting through the characters of the password */
char letter,lo,hi,rev,inv,enc; /* variables used for the letters of the text during the coding process */
FILE *sfp=NULL; /* source file pointer */
FILE *dfp=NULL; /* destination file pointer */
if((sfp=fopen(argv[1],"r"))==NULL) /* open the text file (sfp) named in argument vector 1 for reading - print error message if this operation fails */
{
fprintf(stderr,"UNABLE TO OPEN FILE\n");
PUSAGE;
return 1; /* end program with error */
}
if((dfp=fopen(argv[2],"w"))==NULL) /* open the text file (dfp) named in argument vector 2 for writing - print error message if this operation fails */
{
fprintf(stderr,"UNABLE TO OPEN FILE\n");
PUSAGE;
return 1; /* end program with error */
}
counter=0; /* set the keyword character counter to 0 */
while((letter=fgetc(sfp))!=EOF) /* process the source file by reading in the next letter (as 1 character/byte each) until the file ends, i.e. the EOF (end of file) character is read in */
{
if(counter==strlen(argv[3])) counter=0; /* reset if the keyword overflows, i.e. if its end (string length) is reached */
/* do something to the read in characters/bytes */
lo=letter>>4;
hi=letter<<4;
rev=hi|lo;
inv=~rev;
enc=inv^argv[3][counter];
counter++; /* increase the counter, i.e. step to the next character of the keyword */
fputc(enc,dfp); /* write the encoded character to the destination file */
}
fclose(sfp); /* close file sfp */
fclose(dfp); /* close file dfp */
return 0; /* end with success */
#
我明白一切,我明白单位运算的作用......但现在我需要解密文件,但我必须明白我应该使用哪些操作来反转这些操作:
lo=letter>>4;
hi=letter<<4;
rev=hi|lo;
inv=~rev;
enc=inv^argv[3][counter];
#
我想到了这一点,但我不明白其他几行:
lo=letter<<4;
hi=letter>>4;
rev=??;
inv=~rev;
enc=??;
最佳答案
首先,您应该了解维吉尼亚密码。它与您的编码程序所做的非常相似。
假设您在 letter
中存储了一个字节,这是它的二进制表示形式:letter = 0b0100 1000
。
现在让我们看看加密过程中发生了什么:
// letter = 0100 1000
lo = letter >> 4; // lo = 0000 0100
hi = letter << 4; // hi = 1000 0000
rev = hi | lo; // rev = 1000 0100
inv = ~rev; // inv = 0111 1011
argv[3]
在此上下文中是一个加密 key ,但出于示例目的,我们假设 argv[3][counter] = 1010 1010
enc = inv ^ argv[3][counter]; // enc = 1101 0001
当您想要解密消息时,您需要按不同的顺序应用步骤。
dec = enc ^ argv[3][counter]; // dec = 0111 1011
dec = ~dec // dec = 1000 0100
hi = dec << 4; // hi = 0100 0000
lo = dec >> 4; // lo = 0000 1000
dec = hi | lo; // dec = 0100 1000
关于c - 解码文件 C 按位运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42836495/
我有以下 json: {"results": [{"columns":["room_id","player_name","player_ip"], "types":["integer","text
我在 go 中获取格式不一致的 JSON 文件。例如,我可以有以下内容: {"email": "\"blah.blah@blah.com\""} {"email": "robert@gmail.com
JavaScript中有JSON编码/解码base64编码/解码函数吗? 最佳答案 是的,btoa() 和 atob() 在某些浏览器中可以工作: var enc = btoa("this is so
我在其中一个项目中使用了 Encog,但在解码 One-Of Class 时卡住了。该字段的规范化操作之一是 NormalizationAction.OneOf,它具有三个输出。当我评估时,我想解码预
在我的 previous question关于使用 serialize() 创建对象的 CSV 我从 jmoy 那里得到了一个很好的答案,他推荐了我的序列化文本的 base64 编码。这正是我要找的。
有些事情让我感到困惑 - 为什么 this image在每个浏览器中显示不同? IE9(和 Windows 照片查看器)中的图像: Firefox(和 Photoshop)中的图像: Chrome(和
是否可以在不知道它的类型( JAXBContext.newInstance(clazz) )的情况下解码一个类,或者什么是测试即将到来的正确方法? 我确实收到了从纯文本中解码的消息 - 字符串 传入的
我正在尝试使用 openSSL 库进行 Base64 解码,然后使用 CMS 来验证签名。 下面的代码总是将缓冲区打印为 NULL。 char signed_data[] = "MIIO"; int
我有一个带有 SEL 类型实例变量的类,它是对选择器的引用。在encodeWithCoder/initWithCoder中,如何编码/解码这种类型的变量? 最佳答案 您可以使用 NSStringFro
var url = 'http://www.googleapis.com/customsearch/v1?q=foo&searchType=image'; window.fetch(url) .t
我想知道Android 2.2、2.3和3,4支持的音频/视频格式列表。我也想知道哪些Android版本支持视频编码和解码。我经历了this link,但是关于编码和解码我并不清楚。 任何人的回答都是
我在其中一个项目中使用 Encog,但在解码 One-Of 类时遇到了困难。该字段的规范化操作之一是 NormalizationAction.OneOf,它具有三个输出。当我评估时,我想解码预测值。如
我正在尝试解码现有的 xml 文件,以便我可以正确处理数据,但 XML 结构看起来很奇怪。下面是 xml 示例以及我创建的对象。 11 266 AA1001 1
对 unicode 字符进行 URL 编码的常用方法是将其拆分为 2 %HH 代码。 (\u4161 => %41%61) 但是,unicode在解码时是如何区分的呢?您如何知道 %41%61 是 \
我正在尝试将 json 字符串解码为 Map。 我知道有很多这样的问题,但我需要非常具体的格式。例如,我有 json 字符串: { "map": { "a": "b",
我有一个查询,我认为需要像这样(解码会更大) SELECT firstName, lastName, decode(mathMrk, 80, 'A', mathMrk) as decodeMat
我知道PHP函数encode()和decode(),它们对我来说工作得很好,但我想在url中传递编码字符串,但encode确实返回特殊字符,如“=”、“”' “等等...... 这显然会破坏我的脚本,
我必须解码 Basic bW9uTG9naW46bW9uTW90RGVQYXNz 形式的 http 请求的授权 header 当我解码它时online ,我得到了正确的结果 monLogin:monM
这个问题已经有答案了: Decode Base64 data in Java (21 个回答) 已关闭 8 年前。 我想知道使用哪个库进行 Base64 编码/解码?我需要此功能足够稳定以供生产使用。
我正在尝试从 Arduino BT 解码 []byte,我的连接完美,问题是当我尝试解码数组时。我得到的只是这个字符�(发送的字节数相同)我认为问题出在解码上。我尝试使用 ASCII 字符集,但仍然存
我是一名优秀的程序员,十分优秀!