我有一个 go test 程序来从文件中读取加密内容并解密它,但它得到如下输出:
\n\n输入字节 0 处的非法 Base64 数据
\n\n如果我将加密内容硬编码在 golang 字符串变量中,它可以很好地解密。我在这里缺少什么?我在 stackoverflow 中搜索了类似的错误,有类似的报告,但与我遇到的问题不完全相同。测试代码如下:
\n\npackage main\n\nimport (\n"crypto/aes"\n"crypto/cipher"\n"crypto/rand"\n"encoding/base64"\n"errors"\n"fmt"\n"io"\n"bufio"\n"os"\n"log"\n\n)\n\n\nfunc check(e error) {\n if e != nil {\n panic(e)\n }\n}\n\nfunc main() {\n plaintext := []byte("textstring")\n key := []byte("a very very very very very secre")\n fmt.Printf("%s\\n", plaintext)\n\n fh, err := os.Open("./test.txt")\n check(err)\n scanner := bufio.NewScanner(fh)\n var encrypted_text string\n if scanner.Scan() { //<==========READ FROM FILE\n encrypted_text = scanner.Text()\n fmt.Println("encrypted_text from file: ", encrypted_text)\n } else { //<===========HARD CODE HERE\n encrypted_text = "\\xf2F\\xbc\\x15\\x9d\\xaf\\xce\xcf\x98\\xa3L(>%\\xa2\\x94\\x03_\\x99\\u007fG\\xd8\\v\\xbf\\t#u\\xf8:\\xc0D\\u007f"\n …Run Code Online (Sandbox Code Playgroud) 我试图理解以下代码中的按位操作,但它会导致分段错误
#include <stdio.h>
#include <stdint.h>
main()
{
uint16_t newmss = 1024;
uint8_t *opt;
unsigned int i = 0;
opt[i] = (newmss & 0xff00) >> 8;
opt[i+1] = newmss & 0x00ff;
fprintf(stderr, "opt[0] is %d", opt[0]);
fprintf(stderr, "opt[1] is %d", opt[1]);
}
Run Code Online (Sandbox Code Playgroud)
用.编译 gcc -g -o shift shift.c
然后执行shift,我得到了Segmentation故障
# ./shift
Segmentation fault
using gdb to debug
(gdb) run
Starting program: /home/vincent/shift
root@vincent-desktop:/home/vincent# gdb shift
GNU gdb (GDB) 7.1-ubuntu
(gdb) run
Starting program: /home/vincent/shift
Program received signal SIGSEGV, Segmentation fault.
0x0804843f …Run Code Online (Sandbox Code Playgroud)