Я использую этот код в C # .net для отправки запроса на веб-страницу.
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
Byte[] rnd = new Byte[64];
rng.GetBytes(rnd);
hidChallenge.Value = Encoding.Unicode.GetString(rnd);
А я в java script его использую.
var base64str = document.getElementById("<%=hidChallenge.ClientID %>");
При запуске и отладке:
base64str = 感≗좦短䗅燛梻脕冔춇噙풣訋詇蹘᧩쾏휇늸䫐顨◣希ࠟ䠎ᐷ
Но в Java (JSP)
Я использую этот код:
Random r = new Random();
byte[] rndbyte = new byte[64];
r.nextBytes(rndbyte);
String challenge = new String(rndbyte,StandardCharsets.UTF_16LE);
session.setAttribute("challenge", challenge);
И в JavaScript:
var base64str = 101 ꦖ 쁳 春 꼪 䣇 䣇 鱐 䆺 ᠁ 郷 ̣ 攺 줶 ꋏ 歮 㬎 ꢔ ꢔ 101
Я также пытаюсь следовать кодировке:
US_ASCII
UTF_8
UTF_16
Итак, я получаю ошибку строки 64.