私はATOM-128 例では、任意の文字列を暗号化してAndroidアプリを作るしようとしています:入力 "こんにちは" /出力 "MIH3 +/CC + QCC" 私はすでに(Windowsデスクトップアプリ)のC#でそれを試してみましたが、それは私がアンドロイドスタジオでのJavaと同じことをしようとしたとき、私はこの結果を持ってうまく機能しています: 入力「hello」を 「2662144270646427486464」ATOM-128文字列の暗号化/復号化(アンドロイドスタジオ)
oututこれはCODE
ISpublic class ATOM {
public static String Encrypt(String clearText)
{
String key = "/128GhIoPQROSTeUbADfgHijKLM+n0pFWXY456xyzB7=39VaqrstJklmNuZvwcdEC";
StringBuilder result = new StringBuilder();
int i = 0;
int[] indexes = new int[4];
int[] chars = new int[3];
do
{
chars[0] = i + 1 > clearText.length() ? 0 : (int)clearText.toCharArray()[i++];
chars[1] = i + 2 > clearText.length() ? 0 : (int)clearText.toCharArray()[i++];
chars[2] = i + 3 > clearText.length() ? 0 : (int)clearText.toCharArray()[i++];
indexes[0] = chars[0] >> 2;
indexes[1] = ((chars[0] & 3) << 4) | (chars[1] >> 4);
indexes[2] = ((chars[1] & 15) << 2) | (chars[2] >> 6);
indexes[3] = chars[2] & 63;
if ((char)chars[1] == 0)
{
indexes[2] = 64;
indexes[3] = 64;
}
else if ((char)chars[2] == 0)
{
indexes[3] = 64;
}
for (int index : indexes)
{
result.append(index);
}
}
while (i < clearText.length());
return result.toString();
}
public static String Decrypt(String clearText)
{
String key = "/128GhIoPQROSTeUbADfgHijKLM+n0pFWXY456xyzB7=39VaqrstJklmNuZvwcdEC";
StringBuilder result = new StringBuilder();
int[] indexes = new int[4];
int[] chars = new int[3];
int i = 0;
do
{
indexes[0] = key.indexOf(i++);
indexes[1] = key.indexOf(i++);
indexes[2] = key.indexOf(i++);
indexes[3] = key.indexOf(i++);
chars[0] = (indexes[0] << 2) | (indexes[1] >> 4);
chars[1] = (indexes[1] & 15) << 4 | (indexes[2] >> 2);
chars[2] = (indexes[2] & 3) << 6 | indexes[3];
result.append((char)chars[0]);
if (indexes[2] != 64)
result.append((char)chars[1]);
if (indexes[3] != 64)
result.append((char)chars[2]);
}
while (i < clearText.length());
return result.toString();
}
}
**暗号ない**、ATOM-128は、Base64でエンコードに似** **であると思われます。ところで、あなたはATOM-128仕様へのリンクを提供できますか? – zaph
申し訳ありませんが、ATOM-128の仕様を記述したリンクが見つかりません –
申し訳ありませんがATOM-128仕様を記述するリンクが見つかりませんでした。以下の答えを試しましたが、まだ何もありません。 –