相关疑难解决方法(0)

如何在C#中实现Base64 URL安全编码?

我想在C#中实现Base64 URL安全编码.在Java中,我们有一个公共Codec库,它为我提供了一个URL安全编码字符串.如何使用C#实现相同的目标?

byte[] toEncodeAsBytes = System.Text.ASCIIEncoding.ASCII.GetBytes("StringToEncode");
string returnValue = System.Convert.ToBase64String(toEncodeAsBytes);
Run Code Online (Sandbox Code Playgroud)

上面的代码将它转换为Base64,但它填充==.有没有办法实现URL安全编码?

c# base64 encoding

88
推荐指数
5
解决办法
7万
查看次数

guid到base64,用于URL

问题:有更好的方法吗?

VB.Net

Function GuidToBase64(ByVal guid As Guid) As String
    Return Convert.ToBase64String(guid.ToByteArray).Replace("/", "-").Replace("+", "_").Replace("=", "")
End Function

Function Base64ToGuid(ByVal base64 As String) As Guid
    Dim guid As Guid
    base64 = base64.Replace("-", "/").Replace("_", "+") & "=="

    Try
        guid = New Guid(Convert.FromBase64String(base64))
    Catch ex As Exception
        Throw New Exception("Bad Base64 conversion to GUID", ex)
    End Try

    Return guid
End Function
Run Code Online (Sandbox Code Playgroud)

C#

public string GuidToBase64(Guid guid)
{
    return Convert.ToBase64String(guid.ToByteArray()).Replace("/", "-").Replace("+", "_").Replace("=", "");
}

public Guid Base64ToGuid(string base64)
{
   Guid guid = default(Guid);
   base64 = …
Run Code Online (Sandbox Code Playgroud)

.net c# vb.net base64 guid

45
推荐指数
3
解决办法
3万
查看次数

如何编码Azure存储表行键和分区键?

我正在使用Azure存储表,我有数据进入RowKey,其中包含斜杠.根据此MSDN页面,PartitionKey和RowKey中不允许使用以下字符:

  • 正斜杠(/)字符

  • 反斜杠()字符

  • 数字符号(#)字符

  • 问号(?)字符

  • 控制字符从U + 0000到U + 001F,包括:

  • 水平制表符(\ t)字符

  • 换行符(\n)字符

  • 回车(\ r)字符

  • 控制字符从U + 007F到U + 009F

我见过有些人使用URL编码来解决这个问题.不幸的是,这可能会产生一些问题,例如能够插入但无法删除某些实体.我也看到有些人使用base64编码,但是这也可以包含不允许的字符.

如何在不运行不允许的字符或滚动自己的编码的情况下有效编码RowKey?

.net c# encoding azure azure-storage

13
推荐指数
2
解决办法
4944
查看次数

通过JavaScript解码Base64URL?

所以我很难过.我知道有很多用于JS的Base64编码器/解码器,但不适用于修改过的(和Facebook赞成的)Base64URL变体.到目前为止,搜索stackoverflow已经变得干涸.

是的,我可以使用PHP或其他服务器端库对此进行解码,但我试图保持这种通用性,无论我使用什么平台...例如,如果我要托管一个仅限HTML的Facebook应用程序在Amazon S3/CloudFront上,只使用他们的JS SDK和jQuery来处理表单和获取数据.

也就是说,有没有人知道任何针对JavaScript的Base64URL特定解码器?

提前致谢!

javascript url base64 decoding

10
推荐指数
2
解决办法
2万
查看次数

根据RFC4648,C#:base64url

我正在根据C#中的RFC4648寻找base64url的(快速)标准实现.

我发现HttpServerUtility.UrlTokenEncode但看起来这并不遵循RFC4648(UrlTokenEncode在末尾添加一个数字,表示=已删除的符号数量;请参阅此处此处).

例:

base64编码:

Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes( "AA")); //返回"QUE ="

base64url编码:

HttpServerUtility.UrlTokenEncode(System.Text.Encoding.ASCII.GetBytes( "AA")); //返回"QUE1",但我希望"QUE"

c# base64 urlencode url-encoding

8
推荐指数
1
解决办法
2849
查看次数

如何在C#中正确使用OpenID Connect jwks_uri元数据?

每个OpenID Connect提供程序都会发布包含jwks_uri属性的发现文档.从这里返回的数据jwks_uri似乎有两种不同的形式.一个表单包含名为x5c和的字段x5t.这样的一个例子如下:

{
    "keys": [
        {
            "kty": "RSA",
            "use": "sig",
            "kid": "C61F8F2524D080D0DB0A508747A94C2161DEDAC8",
            "x5t": "xh-PJSTQgNDbClCHR6lMIWHe2sg", <------ HERE
            "e": "AQAB",
            "n": "lueb...",
            "x5c": [
                "MIIC/..." <------ HERE
            ],
            "alg": "RS256"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我看到的另一个版本省略了x5c和x5t属性但包含en.一个例子是:

{
    "keys": [
        {
            "kty": "RSA",
            "alg": "RS256",
            "use": "sig",
            "kid": "cb11e2f233aee0329a5344570349cddb6b8ff252",
            "n": "sJ46h...", <------ HERE
            "e": "AQAB"      <------ HERE
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我不太明白区别是什么,为什么有时会使用x5c/x5t组合,但有时候只是简单e/n.我正在使用C#Microsoft.IdentityModel.Tokens.TokenValidationParameters,我正在试图找出如何供应该物业IssuerSigningKey.此类的示例用法是

new TokenValidationParameters
{
    ValidateAudience …
Run Code Online (Sandbox Code Playgroud)

c# openid-connect jwk

8
推荐指数
3
解决办法
5006
查看次数

当您拥有需要通过ascii通道发送的二进制数据时,您使用什么文本编码方案?

如果您有需要编码的二进制数据,您使用的编码方案是什么?

我知道:

  • 十六进制编码.非常简单,但非常详细,将一个字节扩展为两个字节.
  • 基地64.最常见的,不是那么冗长,将三个字节扩展到四个字节.
  • 基地85.不常见,再次冗长,将四个字节扩展为五个字节.

是否有其他常用的编码方案?如果是这样,有什么优点和缺点?

编辑:这很有用,例如,当尝试在cookie中存储任意数据时.Cookie只能存储文本,而不能存储任意数据,因此您需要以某种方式对其进行转换,最好是将其转换回来.此外,假设您正在使用无状态服务器,以便您无法在服务器上保存状态,只需将标识符放入cookie即可.当然,如果你这样做,你还需要一些方法来验证用户传递给你的是你传递给用户的内容,例如签名.

此外,由于目前的共识是你应该使用base64,因为它很普遍,我也会指出这我使用的...我只是好奇,如果有人使用其他任何东西,如果是这样,为什么.

编辑:万一有人偶然发现,如果您确实想使用Base64将数据存储在cookie中,则需要使用修改后的Base64实现.看到这个答案的原因.

base64 encoding hex base85

7
推荐指数
1
解决办法
2836
查看次数

使用领英账户登录

如何实现Linkedin的登录方法,人们只需点击一个按钮并使用他们的Linkedin帐户登录,就像在Facebook或Twitter上一样?两者都使用OAuth,但我发现它们的指定库很容易使用.对于LinkedIn我只发现DotNetOpenAuth一些示例代码,但我不能让任何意义了它.

是否有任何库可用于促进Linkedin的登录功能?或者有关如何使用DotNetOpenAuth 4在ASP.NET MVC中执行此操作的任何教程?

.net asp.net-mvc oauth linkedin

6
推荐指数
1
解决办法
4118
查看次数

如何BASE64编码URL?

我在KickAssTorrents.com上浏览种子,当我访问链接时,它以不同的方式编码在网址中;

例如(IMDb链接):http://kat.ph/account/confirm/url/aHR0cDovL3d3dy5pbWRiLmNvbS90aXRsZS90dDA0MDE3Mjk=/

现在,当我更改角色时,链接中的某些内容会发生变化,我想知道如何在C#或jQuery中执行此操作?

c# jquery base64

2
推荐指数
2
解决办法
1万
查看次数

使用x509证书签署json文档或字符串

如何使用x509证书签署json文档或字符串?

public static void fund()
{
    string filePath = @"C:\Users\VIKAS\Desktop\Data.xml";
    //Read the file    

    XmlDocument xmlDoc = new XmlDocument();
    XElement ele = XElement.Load(filePath);
    String Xml = ele.ToString();
    xmlDoc.LoadXml(Xml);
    string signature = SignedXMLCert(xmlDoc);
    bool verified = ValidateSignature(signature);
}

public static string SignedXMLCert(XmlDocument xmlDoc)
{
    string startupPath = AppDomain.CurrentDomain.BaseDirectory + @"Certificates\unidesk.p12";
    //  startupPath = AppDomain.CurrentDomain.BaseDirectory + @"\Certificates\BBPS_enc.cer";

    //X509Certificate2 cert = new X509Certificate2(@"D:\Sonal\AXISOU_TEST.P12", "axisbank", X509KeyStorageFlags.Exportable);
    X509Certificate2 cert = new X509Certificate2(startupPath, "axisbank", X509KeyStorageFlags.Exportable);
    //  string PrivateKey = GetRSAPrivateKeyBase64(cert);

    var privateKey = cert.PrivateKey as RSACryptoServiceProvider;
    SignedXml …
Run Code Online (Sandbox Code Playgroud)

c# xml json digital-signature x509certificate2

2
推荐指数
1
解决办法
3639
查看次数

base64编码url安全吗?

我正在使用node.bcrypt.js哈希返回node.js中的十六进制数字作为密码重置令牌.

user.reset_password_token = require('crypto').randomBytes(32).toString('hex'
);
Run Code Online (Sandbox Code Playgroud)

在我在网址中传递令牌之前,我是否还应该对该令牌进行base64编码(即:链接重置电子邮件)?

这样做有什么好处吗?

我似乎记得base64编码可以包含正斜杠,这会弄乱路径:

   var token = user.reset_password_token;

   //is there any benefit to doing base64 encoding?
   var encoded_token = new Buffer(token).toString('base64');

   var reset_link = 'http://example.com/reset/'+ encoded_token;
   sendResetLink( reset_link );
Run Code Online (Sandbox Code Playgroud)

url base64 node.js

1
推荐指数
3
解决办法
1万
查看次数

System.FormatException:'Base-64 char数组或字符串的长度无效.'

我在这里用头撞墙,用这个简单的代码不起作用:

string middle = "eyJzdWIiOiJtYXR0d2ViZXIiLCJqdGkiOiJlMWVmNjc5Mi02YTBjLTQ4YWUtYmQzNi0wZDlmMTVlMDFiY2UiLCJpYXQiOjE0OTMwOTI0OTQsIm5iZiI6MTQ5MzA5MjQ5NCwiZXhwIjoxNDkzMjY1Mjk0LCJpc3MiOiJFQ29tbVdlYkFQSTIiLCJhdWQiOiJFQ29tbVdlYkNsaWVudDIifQ"

byte[] newBytes = Convert.FromBase64String(middle);
middle = Encoding.UTF8.GetString(newBytes);
Run Code Online (Sandbox Code Playgroud)

就这么简单!然而我在标题中得到了错误.

另外,我在https://www.base64decode.org/上运行它,它完美地解码.

c# base64 decode

0
推荐指数
1
解决办法
4723
查看次数