base 64编码的目的是什么以及它在HTTP基本身份验证中使用的原因是什么?

ajs*_*sie 126 security encryption base64

我没有得到Base64加密.

如果可以解密Base64字符串,它的目的是什么?

为什么它被用于HTTP Basic身份验证?

这就像告诉别人我的密码被反转为OLLEH.

看到OLLEH的人会知道原来的密码是HELLO.

Mat*_*ges 241

Base64不是加密 - 它是一种编码.这是一种仅使用可打印(文本)字符表示二进制数据的方法.

有关HTTP基本身份验证维基百科页面,请参阅此段落:

虽然使用Base64算法对用户名和密码进行编码通常会使它们难以被肉眼读取,但它们与编码时一样容易解码.安全性不是编码步骤的目的.相反,编码的目的是将可能在用户名或密码中的非HTTP兼容字符编码为与HTTP兼容的字符.

  • 此外,似乎从字符串中获取"二进制数据"的相关字符编码应该是[iso-8859-1](http://en.wikipedia.org/wiki/ISO/IEC_8859-1).([源(http://stackoverflow.com/questions/7242316/what-encoding-should-i-use-for-http-basic-authentication)) (4认同)

Fle*_*exo 58

它通常被称为base64编码,而不是加密!关于base64编码的好处是,它允许您仅使用可用字符的有限公共子集来表示(二进制)数据,这比仅仅以ASCII编写1和0的字符串更有效.

  • +1,但与1s中存储数据的比较,0s流太夸张了.最好将它与以十六进制格式存储数据进行比较.因为十六进制只会使`x2`比原始流更多,而1s,0s - 使得`x8'倍于字节.(而Base64使`x1.3`数据比原始字节数组多).因此,有时可以将二进制流编码为十六进制字符串,将字节数加倍 - 例如,只是为了在数据库中存储密码哈希. (6认同)

vol*_*ron 30

En crypt ion需要密钥(字符串或算法)才能解密; 因此"地穴"(根:密码学)

荷兰国际集团修改/偏移/改变的字符码到另一个.在这种情况下,现在可以使用HTTP轻松地表示和传输通常的数据字节.

  • @DominicCerisano:不,base64编码不算加密,我希望你不用它来保护任何东西. (6认同)
  • 加密只是意味着"隐藏" - 基于密钥的加密技术是一项非常新的发明.加密是一种编码形式,已被用作加密(虽然不是任何超过12岁的人,已有数百年历史). (5认同)
  • 本地语言中的加密用于指最近的加密模式,特别是计算机加密,它是基于密钥的(公钥/私钥).虽然如此,但没有必要指出一个过时词的字面定义; 否则,你会争论今天使用的许多英语单词的历史定义.白话(有时是口语)是赋予词语背景和定义的东西. (2认同)

Kon*_*lph 19

在日常用语中,"代码"是秘密的.在科学和工程学中,代码只是一个协议,一组规则,如何写东西.

该代码可能是秘密的.在这种情况下,它被称为加密.但总的来说,代码并不是秘密.拿遗传密码.它只是说,我们的DNA由四个不同的基地建成- ,  ,A 和那一起三个基地形成一种氨基酸.还有一张表,其中三个字母形成哪种氨基酸.CGT

这段代码没什么秘密.

同样,Base64不是密码.相反,它是一个允许以每个字符六位存储数据的代码(因此有64个不同的实体,即系统的"基础"是64,就像我们的十进制系统的基数是10,因为有10个不同的实体称为"数字").


And*_*ndy 18

你可能意味着"Base 64编码".加密与编码不同.

维基百科:加密


Nic*_*rey 17

Base-64编码是MIME规范的一部分.它为数据提供传输安全编码,如果/当它通过使用与原始客户端使用的编码方案不同的编码方案的主机进行中继时,将不会被咀嚼.

在intertubes上有很多不同的主机,你不能真正支持除7位ASCII以外的任何东西,而不会有数据丢失/混淆的风险.

例如,IBM大型机使用一种名为EBCDIC的编码(它有许多不同的版本).它的代码点与基于ASCII的'puters所使用的代码点完全不同 - 在ASCII中,字母AZ是0x41 - 0x5A; 在EBCDIC中,字母A-Z甚至不是连续的范围:字母AI存在于0xC1 - 0xC9,字母JR存在于0xD1 - 0xD9,字母SZ存在于0xE2 - 0xE9.