概述
如何解码Linux中的base64编码行?(How do I decode base64 encoded lines in linux?)
我正在尝试读取文件并仅提取base64编码部分。 我通过使用sed来查找模式的'base64'和' - '之间的界限。
我能够这样做使用
sed -e '1,/base64/d' -e '/--/,$d' file.txt | sed '/^s*$/d'
但是当我尝试使用base64解码它时,如下所示,
sed -e '1,/base64/d' -e '/--/,$d' file.txt | sed '/^s*$/d' | base64 -d
我收到一条错误消息: -
BEGIN:VCALENDAR
METHOD:REQUEST
PRODID:Microsoft Exchangbase64: invalid input
请让我知道我做错了什么,是否有更好的方法来实现最终结果。 任何帮助表示赞赏。
I am trying to read a file & extract only the base64 encoded part. I am doing so by using sed to find the lines between the pattern's 'base64' & '--'.
I am able to do so using
sed -e '1,/base64/d' -e '/--/,$d' file.txt | sed '/^s*$/d'
But when i try to decode it using base64 as shown below,
sed -e '1,/base64/d' -e '/--/,$d' file.txt | sed '/^s*$/d' | base64 -d
I get an error message as :-
BEGIN:VCALENDAR
METHOD:REQUEST
PRODID:Microsoft Exchangbase64: invalid input
Please let me know what am i doing wrong and is there an alternate, better way to achieve the end result. Any help is appreciated.
原文:https://stackoverflow.com/questions/41983454
更新时间:2019-12-25 19:04
最满意答案
我得到了这个问题。 文件中的行如下所示
QkVHSU46VkNBTEVOREFSDQpNRVRIT0Q6UkVRVUVTVA0KUFJPRElEOk1pY3Jvc29mdCBFeGNoYW5nZSBTZ
XJ2ZXIgMjAxMA0KVkVSU0lPTjoyLjANCkJFR0lOOlZUSU1FWk9ORQ0KVFpJRDpBVVMgRWFzdGVybiBTdG
最后有一个结束字符,所以我所要做的就是删除它。 因此,现在我的代码看起来如下&它的工作原理: -
sed -e '1,/base64/d' -e '/--/,$d' _12829640_21.12.-.5p.meeting.room_1485234639532_1.mail | sed '/^s$/d' | tr -d "nr" | base64 -d
I got the issue. the lines in the files were as follows
QkVHSU46VkNBTEVOREFSDQpNRVRIT0Q6UkVRVUVTVA0KUFJPRElEOk1pY3Jvc29mdCBFeGNoYW5nZSBTZ
XJ2ZXIgMjAxMA0KVkVSU0lPTjoyLjANCkJFR0lOOlZUSU1FWk9ORQ0KVFpJRDpBVVMgRWFzdGVybiBTdG
There was an end line character at the end, so all i had to do was remove it. Hence, now my code looks as below & it works :-
sed -e '1,/base64/d' -e '/--/,$d' _12829640_21.12.-.5p.meeting.room_1485234639532_1.mail | sed '/^s$/d' | tr -d "nr" | base64 -d
2017-02-02
相关问答
实际上Windows确实有一个实用程序来编码和解码base64 - CERTUTIL 我不知道什么版本的Windows引入了这个命令。 要对文件进行编码: certutil -encode inputFileName encodedOutputFileName
要解码文件: certutil -decode encodedInputFileName decodedOutputFileName
CERTUTIL有许多可用的动词和选项。 要得到几乎所有可用动词的列表: certutil -?
要
...
您可以使用以下正则表达式来检查字符串是否是base64编码的: ^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$
在base64编码中,字符集是[AZ, az, 0-9, and + /] 。 如果剩余长度小于4,则字符串用'='填充。 ^([A-Za-z0-9+/]{4})*表示字符串以0个或更多个base64组开头。 ([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|
...
从v6起,Java SE随附JAXB。 javax.xml.bind.DatatypeConverter具有使方便的静态方法。 请参阅parseBase64Binary()和printBase64Binary() 。 As of v6, Java SE ships with JAXB. javax.xml.bind.DatatypeConverter has static methods that make this easy. See parseBase64Binary() and printB
...
所以你发送请求: http://host:port/myServlet?content=base64_encoded_value
这是由servlet中的方法使用的: protected void doGet(HttpServletRequest request, HttpServletResponse response) {
让我们来看看你在做什么: String content = request.getParameter("content");
似乎字符串内容现在将包含“bas
...
不要将(可能的)二进制文件转换为UTF-8 String ; 而是用FileUtils.writeByteArrayToFile(File, byte[])写byte[] byte[] decodedBytes = Base64.getDecoder().decode(contents.trim());
// String decodedString = new String(decodedBytes);
// FileUtils.write(file,decodedString,"UTF-8")
...
我得到了这个问题。 文件中的行如下所示 QkVHSU46VkNBTEVOREFSDQpNRVRIT0Q6UkVRVUVTVA0KUFJPRElEOk1pY3Jvc29mdCBFeGNoYW5nZSBTZ
XJ2ZXIgMjAxMA0KVkVSU0lPTjoyLjANCkJFR0lOOlZUSU1FWk9ORQ0KVFpJRDpBVVMgRWFzdGVybiBTdG
最后有一个结束字符,所以我所要做的就是删除它。 因此,现在我的代码看起来如下&它的工作原理: - sed -e '1,/base6
...
您可以将其写入文件,就像您可以编写任何其他数据一样。 但是,您需要将文件句柄设置为二进制 。 my $decoded= MIME::Base64::decode_base64($photo);
open my $fh, '>', 'photo.jpg' or die $!;
binmode $fh;
print $fh $decoded;
close $fh
You can write it to a file just like you can write any other data. Yo
...
不幸的是,Base64不是base64。 实现中可能存在差异。 一些实现例如插入行在编码时每76个字符中断,有些则不然。 Base64 is not base64 unfortunately. There may be differences in the implementations. Some implementation for example insert line breaks every 76 characters when encoding, some don't.
似乎最终的A是多余的: In [4]: base64.b64decode('aHR0cDovLzR1ZnJlZS50ay9tZWRpYTcyMzY0Ni9mdWVuZi8wMzYubXAz')
Out[4]: 'http://4ufree.tk/media723646/fuenf/036.mp3'
It would appear that the final A is superfluous: In [4]: base64.b64decode('aHR0cDovLzR1ZnJlZS50ay9tZ
...
这是一些Python代码,它接受命令行上的搜索词后面的文件名。 像往常一样,如果arg包含空格,则必须引用它。 import sys
from base64 import b64decode
fname, pattern = sys.argv[1:]
with open(fname) as f:
for row in f:
row = b64decode(row).decode()
if pattern in row:
print(
...
最后
以上就是完美宝贝为你收集整理的linux解码base64工具,如何解码Linux中的base64编码行?(How do I decode base64 encoded lines in linux?)...的全部内容,希望文章能够帮你解决linux解码base64工具,如何解码Linux中的base64编码行?(How do I decode base64 encoded lines in linux?)...所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复