Eri*_*one 34 java base64 scala
我试过了 :
val md = java.security.MessageDigest.getInstance("SHA-1")
val result = new sun.misc.BASE64Encoder().encode(md.digest("user:pass".getBytes))
Run Code Online (Sandbox Code Playgroud)
结果:
md: java.security.MessageDigest = SHA-1 Message Digest from SUN, <initialized>
result: String = smGaoVKd/cQkjm7b88GyorAUz20=
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
import java.net.URLEncoder
val result = URLEncoder.encode(user + ":" + pass, "UTF-8")
Run Code Online (Sandbox Code Playgroud)
结果:
result: String = user%3Apass
Run Code Online (Sandbox Code Playgroud)
基于http://www.base64encode.org/ 我想要的结果值应为"dXNlcjpwYXNz"
该网站与这些编码的不同之处是什么?另外,我如何模仿Java/Scala中的网站?
请注意,特定应用程序用于使用基本身份验证的标头.
Vla*_*eev 73
从Java 8开始,标准库中直接有一些方便的实用程序类:Base64.Decoder和Base64.Encoder.还有一些静态工厂方法来构造这些类的实例,这些类在Base64类中对各种类型的Base64执行Base64编码/解码.
这是如何使用编码器:
import java.util.Base64
import java.nio.charset.StandardCharsets
Base64.getEncoder.encodeToString("user:pass".getBytes(StandardCharsets.UTF_8))
Run Code Online (Sandbox Code Playgroud)
Lou*_*man 16
要将"user:pass"改为"dXNlcjpwYXNz",您应该对UTF-8编码的字符串进行base64编码,但不能进行散列.
使用第三方Guava库,我可以运行
System.out.println(BaseEncoding.base64()
.encode("user:pass".getBytes(Charsets.UTF_8)));
Run Code Online (Sandbox Code Playgroud)
然后我出去了
dXNlcjpwYXNz
Run Code Online (Sandbox Code Playgroud)
按照要求.其他Base64编码器的工作方式应该相似.
Epi*_*ist 11
斯卡拉被问到:
import java.nio.charset.StandardCharsets
val (password, expected) = ("user:pass".getBytes(StandardCharsets.UTF_8), "dXNlcjpwYXNz")
assume(java.util.Base64.getEncoder.encodeToString(password)==expected)
Run Code Online (Sandbox Code Playgroud)
如果你正在使用scalaj(我曾经),你可以这样做:
import scalaj.http.Base64
Base64.encodeString(str)
Run Code Online (Sandbox Code Playgroud)
要么
import scalaj.http.HttpConstants._
base64(str)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
34037 次 |
| 最近记录: |