import java.nio.charset.Charset;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;
/*
プログラミングのお題スレ Part14
//mevius.5ch.net/test/read.cgi/tech/1558168409/683
683 名前:デフォルトの名無しさん[sage] 投稿日:2019/06/30(日) 08:04:20.61 ID:uuDJgtvu
お題
#1234→◆gdyb21LQTc
#abcd→◆4vxxTEcn7p
#あいうえお→◆rXz1zlMT-L
左のトリップキーから右のトリップを返すアルゴリズムを探せ
*/
class Ideone
{
static final String CHARSET
= "MS932"; static final String DIGEST
= "MD5";
{
System.
out.
println(trip
("1234#1234")); System.
out.
println(trip
("abcd#abcd")); System.
out.
println(trip
("あいうえお#あいうえお")); }
{
int index = name.indexOf("#");
if (index == -1) return name;
String key
= name.
substring(index
+ 1); byte[] src = key.getBytes(Charset.forName(CHARSET));
return name.substring(0, index) + "◆" + Base64.getEncoder().encodeToString(dst).substring(0, 10).replace('+', '-');
}
}
aW1wb3J0IGphdmEubmlvLmNoYXJzZXQuQ2hhcnNldDsKaW1wb3J0IGphdmEuc2VjdXJpdHkuTWVzc2FnZURpZ2VzdDsKaW1wb3J0IGphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uOwppbXBvcnQgamF2YS51dGlsLkJhc2U2NDsKCgovKgrjg5fjg63jgrDjg6njg5/jg7PjgrDjga7jgYrpoYzjgrnjg6wgUGFydDE0IAovL21ldml1cy41Y2gubmV0L3Rlc3QvcmVhZC5jZ2kvdGVjaC8xNTU4MTY4NDA5LzY4Mwo2ODMg5ZCN5YmN77ya44OH44OV44Kp44Or44OI44Gu5ZCN54Sh44GX44GV44KTW3NhZ2VdIOaKleeov+aXpe+8mjIwMTkvMDYvMzAo5pelKSAwODowNDoyMC42MSBJRDp1dURKZ3R2dQrjgYrpoYwKIzEyMzTihpLil4ZnZHliMjFMUVRjCiNhYmNk4oaS4peGNHZ4eFRFY243cAoj44GC44GE44GG44GI44GK4oaS4peGclh6MXpsTVQtTAoK5bem44Gu44OI44Oq44OD44OX44Kt44O844GL44KJ5Y+z44Gu44OI44Oq44OD44OX44KS6L+U44GZ44Ki44Or44K044Oq44K644Og44KS5o6i44GbCiovCgpjbGFzcyBJZGVvbmUKewogICAgc3RhdGljIGZpbmFsIFN0cmluZyBDSEFSU0VUID0gIk1TOTMyIjsKICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgRElHRVNUICA9ICJNRDUiOwoKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24KICAgIHsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4odHJpcCgiMTIzNCMxMjM0IikpOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbih0cmlwKCJhYmNkI2FiY2QiKSk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHRyaXAoIuOBguOBhOOBhuOBiOOBiiPjgYLjgYTjgYbjgYjjgYoiKSk7CiAgICB9CgogICAgc3RhdGljIFN0cmluZyB0cmlwKFN0cmluZyBuYW1lKSB0aHJvd3MgTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uCiAgICB7CiAgICAgICAgaW50IGluZGV4ID0gbmFtZS5pbmRleE9mKCIjIik7CiAgICAgICAgaWYgKGluZGV4ID09IC0xKSByZXR1cm4gbmFtZTsKICAgICAgICBTdHJpbmcga2V5ID0gbmFtZS5zdWJzdHJpbmcoaW5kZXggKyAxKTsKICAgICAgICBieXRlW10gc3JjID0ga2V5LmdldEJ5dGVzKENoYXJzZXQuZm9yTmFtZShDSEFSU0VUKSk7CiAgICAgICAgYnl0ZVtdIGRzdCA9IE1lc3NhZ2VEaWdlc3QuZ2V0SW5zdGFuY2UoRElHRVNUKS5kaWdlc3Qoc3JjKTsKICAgICAgICByZXR1cm4gbmFtZS5zdWJzdHJpbmcoMCwgaW5kZXgpICsgIuKXhiIgKyBCYXNlNjQuZ2V0RW5jb2RlcigpLmVuY29kZVRvU3RyaW5nKGRzdCkuc3Vic3RyaW5nKDAsIDEwKS5yZXBsYWNlKCcrJywgJy0nKTsKICAgIH0KfQog