★★ Java の宿題ここで答えます Part 67 ★★の737


★★ Java の宿題ここで答えます Part 67 ★★の737

/* 普通の暗号化は大丈夫だそうなのでキモだけ */
/**
 * 与えられた平文と暗号鍵を元に暗号化処理を行う。
 * @param source 平文
 * @param cryptKey 暗号鍵
 * @return 暗号文
 */
public static String encrypt(final String source, final int cryptKey) { 
  // 引数チェック
  if (source == null || source.length() == 0) {
   throw new IllegalArgumentException("Source String is null or empty.");
  }
  if (cryptKey < 10 || 99 < cryptKey) {
   throw new IllegalArgumentException("cryptKey is less than 10 or more than 99.");
  }

  final char START_CHAR = '!';
  final char END_CHAR = 'z';

  // 奇数の暗号鍵(10で割って切り捨て)
  final int ODD_KEY = (int) Math.floor(cryptKey / 10);
  // 偶数の暗号鍵(剰余)
  final int EVEN_KEY = cryptKey % 10;

  char[] work = source.toCharArray();
  for (int i = 0; i < work.length; i++) {
   // n文字目が偶数ならEVEN_KEYを加え、奇数ならODD_KEYを加える。
   work[i] += ( (i+1) % 2 == 0 ) ? EVEN_KEY : ODD_KEY;
   if (work[i] > END_CHAR) {
    // 使用可能文字の範囲を超えたら最初の文字まで戻す。
    work[i] = (char) (work[i] - END_CHAR + START_CHAR -1);
   }
  }

  return String.copyValueOf(work);
}

/* ソースここまで */

CONTENTS

最新の20件

2020-11-14 2005-12-06 2006-11-04 2012-07-15 2009-06-19
  • ★★ Java の宿題ここで答えます Part 67 ★★の737
2011-03-03 2006-12-13 2007-11-05 2014-07-22 2014-07-19 2014-07-09 2014-01-14 2012-09-03 2012-03-28

今日の6件

人気の30件

  • counter: 2540
  • today: 1
  • yesterday: 0
  • online: 1