private string CalculateSHA1(string str) { using (var sha1 = SHA1.Create()) { var bs = sha1.ComputeHash(new UTF8Encoding().GetBytes(str)); return BitConverter.ToString(bs).ToLower().Replace("-", ""); } }
Java UUIDをシードにして乱数を発生させる
String uuid = UUID.randomUUID().toString(); // uuid = "9115d2c8-a3f4-4c4e-9c44-e65b6f483f90" long seed = Long.valueOf(uuid.substring(0, 8), 16); Random random = new Random(seed); // 0~9999 の乱数 Integer number1 = random.nextInt(10000); // 1~10000 の乱数 Integer number2 = random.nextInt(10000) + 1;
.NET Core HttpClientでproxyを利用する
Ⅰ. はじめに
.NET CoreではWebProxyクラスは存在しません。
代わりにIWebProxyを継承して自分でクラスを作る必要があります。
※2017/05/30 追記
.NET Core 2.0 でWebProxyクラスが追加されました。
Ⅱ. サンプル
class MyWebProxy : IWebProxy { public ICredentials Credentials { get; set; } public Uri GetProxy(Uri destination) => new Uri("http://127.0.0.1:3128"); public bool IsBypassed(Uri host) => false; }
var handler = new HttpClientHandler(); handler.Proxy = new MyWebProxy(); handler.UseProxy = true; // 証明書を全て信頼する // handler.ServerCertificateCustomValidationCallback = delegate { return true; }; var client = new HttpClient(handler);
.NET Core AESで暗号化、複合する
Ⅰ. はじめに
Aesクラスを利用します。
.NET Core で IV 256bit を使う方法はこちら。
http://kagasu.hatenablog.com/entry/2017/01/04/213533
Ⅱ. Aesを利用した複合の例
public byte[] DecryptRijndael(byte[] bytes) { Aes aes = Aes.Create(); aes.Padding = PaddingMode.None; aes.Mode = CipherMode.CBC; using (var decryptor = aes.CreateDecryptor(key, iv)) { return decryptor.TransformFinalBlock(bytes, 0, bytes.Length); } }
Android 非同期処理を強制しない方法
Ⅰ. はじめに
Android 3.0以降では ネットワーク処理をメインスレッドで行うと以下の例外を吐くようになりました。
java.net.SocketException: android.os.NetworkOnMainThreadException
Ⅱ. 強制しない方法
以下をonCreateなどに追加するとメインスレッドでネットワーク処理を行ってもエラーが出ません。
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);