Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么Debian和AS400提供不同的base64编码字符串?

为什么Debian和AS400提供不同的base64编码字符串?
EN

Stack Overflow用户
提问于 2016-11-02 00:54:51
回答 1查看 150关注 0票数 1

我使用gSOAP来使用一个服务,我的基本身份验证字符串编码为两个不同的字符串,一个来自Linux32位,另一个来自AS400。代码是一样的我猜这可能是使用EBCDIC的AS400,但我正在将它转换为ASCII,它给出了相同的结果。有人有同样的问题或类似的吗?

这是Linux编码的字符串:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
c2FudGFuZGVyY29uc3VtZXI6Z2Vyc29hMg==

这是AS400编码的字符串:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ooGVo4GVhIWZg5aVoqSUhZl6h4WZopaB8g==

这是编码代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if (!t)
    t = (char*)soap_malloc(soap, output_length /*(n + 2) / 3 *
                                                * 4 + 1 */);
if (!t)
    return NULL;

p = t;

for (int i = 0, j = 0; i < input_length;) {

    uint32_t octet_a = i < input_length ? (unsigned char)s[i++] : 0;
    uint32_t octet_b = i < input_length ? (unsigned char)s[i++] : 0;
    uint32_t octet_c = i < input_length ? (unsigned char)s[i++] : 0;

    uint32_t triple = (octet_a << 0x10) + (octet_b << 0x08) + octet_c;

    t[j++] = encoding_table[(triple >> 3 * 6) & 0x3F];
    t[j++] = encoding_table[(triple >> 2 * 6) & 0x3F];
    t[j++] = encoding_table[(triple >> 1 * 6) & 0x3F];
    t[j++] = encoding_table[(triple >> 0 * 6) & 0x3F];
}

for (int i = 0; i < mod_table[input_length % 3]; i++)
    t[output_length - 1 - i] = '=';

t[output_length - mod_table[input_length % 3] + 2] = '\0';

Linux系统的代码运行良好。来自AS400的不起作用。我想这是一些AS400编码问题,但我不确定,而且访问AS400系统的权限有限,所以我无法跟踪很多。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-02 01:28:12

这是因为您正在转换一个字节序列,它表示在EBCDIC中编码的文本。

第一个字符串是以下字节:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
115,97,110,116,97,110,100,101,114,99,111,110,115,117,109,101,114,58,103,101,114,115,111,97,50

在ASCII中解码为santanderconsumer:gersoa2。顺便说一句,你现在必须改变密码。

第二个Base64字符串是以下字节:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
162,129,149,163,129,149,132,133,153,131,150,149,162,164,148,133,153,122,135,133,153,162,150,129,242

检查https://en.wikipedia.org/wiki/EBCDIC上的EBCDIC表,我们可以看到这是同一个字符串。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40375791

复制
相关文章
URL编码和Base64编码
在理清字符集和字符编码关系一文中我们介绍了常见字符集以及字符编码之间的关系,本期我们继续朝着这个方向介绍常见的编码算法。 URL编码 URL编码是浏览器发送数据给服务器时使用的编码,它是编码算法,而不
木可大大
2018/07/25
3.4K0
URL编码和Base64编码
Base64编码的字符串与图片的互转
用Flex写了一个例子,图片(暂时仅支持png、jpg/jpeg)转成base64编码的字符串(默认取上传文件的后缀名,然后添加了“data:image/(png|gif|jpg|jpeg);base64,”)
meteoric
2018/11/16
1.6K0
URI编码解码和base64
概述 对于uri的编解码,在js中有3对函数,分别是escape/unescape,encodeURI/decodeURI,encodeURIComponent/decodeURIComponent。 它们的适用范围不同,而且遵循的编码规范也不同。 对于上述函数而言,所有的ASCII的字符编码相同,采用%XX的形式。而对于unicode字符,escape编码形式为%uXXXX,而其余两个函数 则先将unicode字符按照utf-8对其进行编码,然后继续进行uri编码(百分号)。对于中文字符,每个字符用urf
欲休
2018/03/15
2.5K0
BASE64编码
附录:BASE64编码的原理(节选自http://www.vbzx.net/ArticleView/vbzx_Article_View_1199.asp)
源哥
2018/08/28
1.7K0
base64编码
当需要在传输或存储数据时,我们经常需要将二进制数据转换为可打印的字符形式。Base64编码就是一种常用的编码方式,它可以将原始数据转换为由64个不同字符组成的字符串。
cultureSun
2023/07/08
3720
base64编码的简单介绍 base64编码的具体用途
对于大多数参与编码的人员来说,base64并不陌生。对于一般人来说可能不知道base64是什么,但实际上base64早已被广泛的运用在计算机领域。在现代的互联网时代,已经是离不开这位重要的朋友了。那么什么是base64编码呢?这种编码又有什么用途呢?下面就来为大家简单介绍一下。
用户8739990
2021/07/09
1.6K0
base64编码的简单介绍 base64编码的具体用途
Base64编码
Base64 中的 64 个可打印字符包括:大小写字母 a - z、阿拉伯数字 0 - 9,这样共有 62 个字符,另外两个可打印字符在不同的系统中而不同。RFC 4648 标准中,另外两个可打印字符是:加号 + 、斜线 /。Base64 使用等号 = 作为填充字符。
真正的飞鱼
2023/02/01
1.3K0
将图片转换为Base64编码字符串、解析Base64编码字符串后生成图片「建议收藏」
当图片转换为base64编码字符串后,其中包含大量的+号,如果我们将上述base64编码字符串通过网络传输给其他接口,那么服务器在解析数据时会把+号当成连接符,然后自动将+号转换为空格,所以为保证数据的准确性,我们需要将空格转换成+号,转换方法如下:
全栈程序员站长
2022/09/14
1.1K0
从byte[]和char[]的不同,看字符串的编码问题
char是一个16位二进制的Unicode字符,JAVA用char来表示一个字符 。
品茗IT
2023/10/22
4800
浅谈BASE64编码
很多人都以为编码(Encoding)和加密(Encryption)是同一个意思。编码和加密都是对格式的一种转换,但是它们是有区别的。编码是公开的,比如下面要介绍的Base64编码,任何人都可以解码;而加密则相反,你只希望自己或者特定的人才可以对内容进行解密。
小蜜蜂
2019/07/23
2.5K0
浅谈BASE64编码
Base64编码的作用分析
ase64编码本质上是一种将二进制数据转成文本数据的方案。对于非二进制数据,是先将其转换成二进制形式,然后每连续6比特(2的6次方=64)计算其十进制值,根据该值在大小为64的码表中找到对应的字符,最终得到一个文本字符串。
用户1503405
2021/10/08
1.7K0
MD5 加密和 BASE64 编码
package com.yawn.security; import java.security.MessageDigest; import java.util.Base64; public class Encrypter {  public static String md5Encrypt(String str) throws Exception {      MessageDigest md5 = MessageDigest.getInstance("MD5");   // MD5 编码   byt
yawn
2018/03/14
1.1K0
图片和Base64编码相互转换[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/135035.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/07
1K0
python base64编码
base64编码后的数据回避原始数据少占用33%左右的存储空间。python内置的标准库base64提供了base64编码的功能
灯珑LoGin
2022/10/31
9210
字符串和编码
我们已经讲过了,字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题。
用户9076598
2022/03/02
4960
Android Base64编码字符串与文件之间的转化
开发中有时传输图片或音频等文件。我们会采用Base64编码成字符串传输 那么获取后 就要重新生成文件。
码客说
2019/10/22
2.5K0
Base64编码原理
目前Base64已经成为网络上常见的传输8Bit字节代码的编码方式之一。在做支付系统时,系统之间的报文交互都需要使用Base64对明文进行转码,然后再进行签名或加密,之后再进行(或再次Base64)传输。那么,Base64到底起到什么作用呢? 在参数传输的过程中经常遇到的一种情况:使用全英文的没问题,但一旦涉及到中文就会出现乱码情况。与此类似,网络上传输的字符并不全是可打印的字符,比如二进制文件、图片等。Base64的出现就是为了解决此问题,它是基于64个可打印的字符来表示二进制的数据的一种方法。 电子邮件刚问世的时候,只能传输英文,但后来随着用户的增加,中文、日文等文字的用户也有需求,但这些字符并不能被服务器或网关有效处理,因此Base64就登场了。随之,Base64在URL、Cookie、网页传输少量二进制文件中也有相应的使用。
飞狗
2019/05/19
1.4K0
php读取和保存base64编码的图片内容
<?php header('Content-type:text/html;charset=utf-8'); //读取图片文件,转换成base64编码格式 $image_file = './429676
lilugirl
2019/05/26
2.6K0
字符串和编码
ASCII(American Standard Code for Information Interchange),是一种单字节的编码。计算机世界一开始只有英文,而单字节可以表示256个不同的字符,可以表示所有的英语字符和许多的控制符号。不过ASCII只用到了其中的一半(\x80以下),这也是MBCS得以实现的基础。
紫禁玄科
2022/03/24
7210
字符串和编码
字符串和编码
字符编码 我们已经讲过了,字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题。 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),如果要表示更大的整数,就必须用更多的字节。比如两个字节可以表示的最大整数是65535,4个字节可以表示的最大整数是4294967295。 由于计算机是美国人发明的,因此,最早只有127个字母被
wangxl
2018/03/08
9370
字符串和编码

相似问题

为什么mysql和perl base64字符串编码不同?

120

为什么Ruby base64编码字符串与所有其他base64编码字符串不同?

20

为什么base64使用CryptoJS与标准base64编码不同?

14

base64编码后的sha1编码,为什么结果不同

11

为什么base64编码的字符串使用字符+和/?

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文