我不熟悉Java。
return Base64.encodeToString(encrypt(plainTextbytes,keyBytes, keyBytes), Base64.DEFAULT);
在默认情况下,我得到" DEFAULT无法解决或者不是字段"
我从一个注意到的网站获得了代码块,"下面的java代码使用了android SDK中的base64 util类,但是你可以将它替换为apache commons"中的一个,我和#34;我非常肯定是问题,缺少实用工具类。
所以我点击它并到达那里...... O.o
我看到一段代码,没有关于如何处理它的上下文。我需要代码与C#代码匹配并给出相同的结果,因此切换到另一种格式不是解决方案。我想我不得不恭维那个类,但我还没有找到实际需要的第一个线索。
答案 0 :(得分:1)
以下是您对代码墙的处理方式:由于您正在尝试使用encodeToString
,因此您需要搜索encodeToString
以查看是否存在'方法那个名字。在此代码中没有一个。但是如果类有一个定义方法的超类,那么类中可能仍然存在一个。所以你看看这个类是否有一个超类,它确实:
public class Base64 extends BaseNCodec {
所以现在你必须尝试找到BaseNCodec
的代码。没有超链接,但您可以检查网址,查找Base64
,然后尝试将Base64
替换为BaseNCodec
,以查看网址是否采用相同的格式。这样可行。那个班级 有encodeToString
:
/**
* Encodes a byte[] containing binary data, into a String containing characters in the Base-N alphabet.
* Uses UTF8 encoding.
*
* @param pArray
* a byte array containing binary data
* @return A String containing only Base-N character data
*/
public String encodeToString(final byte[] pArray) {
return StringUtils.newStringUtf8(encode(pArray));
}
不要担心身体,只要看看javadoc和参数。与Android版本不同,只有一个参数。没有"标志"参数,因为在Android上,flags参数是默认值,你可以猜测缺少flags参数不会成为问题。您应该只使用byte[]
参数。
但是有一个问题:Apache版本不是static
,这意味着Base64.encodeToString
无法工作。您需要Base64
的实际实例。要弄清楚你想要什么,你需要回到Base64
代码并查看构造函数;然后查看每个构造函数的Javadoc,找出你想要的东西。
它还有助于查看适用于Android的Javadoc。从http://developer.android.com/reference/classes.html
开始,查找Base64
课程。您可以在那里找到encodeToString
方法。这需要一个flags
参数,虽然该方法对标志的含义没有太多说明,但您可以向上滚动并查看可用的不同标志。一个是URL_SAFE
。由于说明告诉您使用DEFAULT
,这意味着他们不希望您使用URL_SAFE
选项。这很重要,因为Apache版本中的一些构造函数为您提供了是否使用URL安全编码的选项;不要,除非您认为上述网站有误。
我不知道你需要编写什么样的代码。但这应该让你开始并让你知道如何在将来自己研究这样的问题。
答案 1 :(得分:0)
它告诉您,您可以使用Apache Commons Codec库对byte []而不是android库进行base64编码。
return Base64.encodeBase64( encrypt(plainTextbytes,keyBytes, keyBytes) );
答案 2 :(得分:0)
使用来自Apache Commons Base64的return Base64.encodeBase64String(byte[]);
以String形式返回加密,它还将解决PKCS5Padding和PKCS7Padding之间的任何填充问题。