java中的Base36编码和解码

java中的Base36编码和解码,java,c#,encoding,Java,C#,Encoding,我在应用程序中使用C#和Java。我有一个windows服务,它使用以下方法解密字符串: public static String DecryptStringToBase36(String encryptedText, String key) { if (key == null) key = AesSecretKey; encryptedText = Encoding.UTF8.GetString(Base36.Base36Stri

我在应用程序中使用C#和Java。我有一个windows服务,它使用以下方法解密字符串:

public static String DecryptStringToBase36(String encryptedText, String key)
        {
            if (key == null) key = AesSecretKey;
            encryptedText = Encoding.UTF8.GetString(Base36.Base36StringToByteArray(encryptedText));
            var encryptedBytes = Convert.FromBase64String(encryptedText);
            return Encoding.UTF8.GetString(GetRijndaelManaged(key).CreateDecryptor()
                .TransformFinalBlock(encryptedBytes, 0, encryptedBytes.Length));
        }
但是我需要转换一个字符串,在java中说“Hello”,这样我的C#应用程序就可以对它进行解密。
我在java中使用了
Base64
,但在c#中解密时它给了我一个例外。

好消息是;NET中也没有内置的base-36类;它应该很容易实现/移植,出于好奇:你到底为什么要对所有东西进行双重编码?你好像在说:
encryptedBytes base-64 text utf-8 bytes encryptedText=base-36 text
——坦白说,这有点傻;它可能只是
encryptedBytes encryptedText=base-36 text
-我遗漏了什么吗?@VishveshPhadnis这部分解释了为什么要使用base-36;它不能解释为什么你要通过中间的2个额外步骤(每个都增加不必要的填充);顺便说一句,简单地使用base-64与url安全字母表稍有不同也是很常见的(例如,
-
-
而不是
+
/
),并且没有填充(没有尾随的
=
),但考虑到一个问题:只需将base-36转换器移植到java中,这是一个小时的工作,最多;见鬼,甚至可能需要5分钟;我假设您已经有了C#(因为它不是.NET标准类型),但这是编码,而不是加密。