我正在創建一個可以生成JWT令牌的方法。部分方法從我的web.config中讀取一個值,該值用作生成用於爲JWT令牌創建簽名的哈希的「祕密」。TextEncodings.Base64Url.Decode vs Convert.FromBase64String
<add key="MySecret" value="j39djak49H893hsk297353jG73gs72HJ3tdM37Vk397" />
最初我嘗試使用以下方法將「祕密」值轉換爲字節數組。
byte[] key = Convert.FromBase64String(ConfigurationManager.AppSettings["MySecret"]);
然而,當該線達到引發了異常...
輸入不是有效的Base-64字符串,因爲它含有非基本64字符,兩個以上的填充字符或填充字符中的非法字符。
所以我看着OAuth的代碼,因此在使用另一種方法來改變一個base64字符串轉換爲字節數組
byte[] key = TextEncodings.Base64Url.Decode(ConfigurationManager.AppSettings["MySecret"]);
這種方法的工作沒有問題。對我來說,看起來他們正在做同樣的事情。將Base64文本值更改爲字節數組。但是,我必須錯過一些東西。爲什麼Convert.FromBase64String
失敗並且TextEncodings.Base64Url.Decode
有效?