Skip to content

Instantly share code, notes, and snippets.

@aymkx
aymkx / aggregate_exif.py
Created June 15, 2018 15:13
EXIFデータかき集めて集計するやつ。まだ途中
import sys, os
import numpy
from PIL import Image
from PIL.ExifTags import TAGS
def get_exif(file):
try:
with Image.open(file) as im:
@aymkx
aymkx / primenumber.py
Last active December 21, 2017 13:06
Pythonに翻訳しただけ
import random, time, subprocess
def powmod(base, exp, mod):
buf = 1
for i in range(exp.bit_length() - 1, -1, -1):
buf = ((buf ** 2) * (base ** ((exp >> i) & 1))) % mod
return buf
@aymkx
aymkx / primenumber.rb
Last active December 19, 2017 19:53
そすうをつくります。
module PrimeNumber
def self.powmod(base, exp, mod)
return 1 if exp == 0
exp.bit_length.times.inject(1) do |buf, i|
(buf ** 2) * (base ** exp[exp.bit_length - 1 - i]) % mod
end
end
def self.miller_rabin_prime?(num, trial)
return false if num.even? || num < 3
@aymkx
aymkx / rsa.rb
Last active October 28, 2021 15:15
Implement RSA-PKCS#1 v1.5 in Ruby
require 'securerandom'
require 'matrix'
module RSA
module Calculator
def self.powmod(base, exp, mod)
return 1 if exp == 0
exp.bit_length.times.inject(1) do |buf, i|
(buf ** 2) * (base ** exp[exp.bit_length - 1 - i]) % mod
end
@aymkx
aymkx / md5.rb
Last active November 28, 2017 03:27
Implement MD5 in Ruby
module Binary
# or MD5.module_eval(using Module.new{refine Class {~}...})
INTEGER_SIZE = 32
refine Integer do
def bit_rotate(bit_width=INTEGER_SIZE,shift=1)
raise ArgumentError if bit_width.negative?
shift = shift % bit_width
((self << shift) + (self >> (bit_width - shift) & ((1 << shift) - 1))) & ((1 << bit_width) - 1)