import sys sys.path.append('../500_common') import lib import lib_ss if True: images = lib.get_images("data/result.html") else: soup = lib_ss.main( "/Users/nakamurasatoru/git/d_genji/genji_curation/src/500_common/Chrome1seq", "Profile 1", 60) images = lib.get_images_by_soup(soup) manifest = "https://kotenseki.nijl.ac.jp/biblio/100153621/manifest" areas = ["3020,530,2600,3550", "420,530,2600,3550"] countMax = 5 token = "eyJhbGciOiJSUzI1NiIsImtpZCI6IjA4MGU0NWJlNGIzMTE4MzA5M2RhNzUyYmIyZGU5Y2RjYTNlNmU4ZTciLCJ0eXAiOiJKV1QifQ.eyJuYW1lIjoidS5uYWthbXVyYS5zYXRvcnUgdSIsInBpY3R1cmUiOiJodHRwczovL2xoMy5nb29nbGV1c2VyY29udGVudC5jb20vLXBZeVhMVEpMeFE0L0FBQUFBQUFBQUFJL0FBQUFBQUFBQUFBL0FDSGkzcmVWR21aMzNBQTRXSGloWGQ0aGZfSUcyNHpIX1EvcGhvdG8uanBnIiwiaXNzIjoiaHR0cHM6Ly9zZWN1cmV0b2tlbi5nb29nbGUuY29tL2NvZGgtODEwNDEiLCJhdWQiOiJjb2RoLTgxMDQxIiwiYXV0aF90aW1lIjoxNTk0MjQ4OTI2LCJ1c2VyX2lkIjoiUGwySXNUNWlVV1Z5SVZQUFFkNVNZbHZkdmV6MiIsInN1YiI6IlBsMklzVDVpVVdWeUlWUFBRZDVTWWx2ZHZlejIiLCJpYXQiOjE2MDk1MDU1NjMsImV4cCI6MTYwOTUwOTE2MywiZW1haWwiOiJ1Lm5ha2FtdXJhLnNhdG9ydUBnLmVjYy51LXRva3lvLmFjLmpwIiwiZW1haWxfdmVyaWZpZWQiOnRydWUsImZpcmViYXNlIjp7ImlkZW50aXRpZXMiOnsiZ29vZ2xlLmNvbSI6WyIxMDExNzI0MzcwNTUzMjI0MjcwMDYiXSwiZW1haWwiOlsidS5uYWthbXVyYS5zYXRvcnVAZy5lY2MudS10b2t5by5hYy5qcCJdfSwic2lnbl9pbl9wcm92aWRlciI6Imdvb2dsZS5jb20ifX0.kUmB214m_vDPwjcml7q_6mXeL_iKbkztLTYmEvAYk_v5BezXjIk8SmRalppuEXWko0HDKHr2fUSq77yf5oL0_Df2YHMQFPHbiCc_e48SCJxek3x25BNhQe1zlitEP9Q9QtVyMHJhCYAFXyCRe_ZNrWAKG-8hWFy2Xchbe9_Sk7TJUbY62_L53dK5zwXIdiBqNTRePE1nlGCUm83PrBGXLnBA-OqurGdEMcif-txO-ZYX7olJJhoERaYzG4eEjGdUtFEfHhihcxIxiufPmHpAV5z1TNPlAae6F9NGbZk9o8EWT60LuNVgg4rJo0HrBUvBmOdRHJYUAibp9f3rGArsUw" lib.post(manifest, areas, countMax, token, images, "Manifest", timeout=1)
import sys sys.path.append('../500_common') import lib import lib_ss if True: images = lib.get_images("data/result.html") else: soup = lib_ss.main( "/Users/nakamurasatoru/git/d_genji/genji_curation/src/500_common/Chrome31", "Profile 3", 10) images = lib.get_images_by_soup(soup) collectionUrl = "https://utda.github.io/genji/iiif/ndl-2610937/top.json" areas = ["3200,250,2800,2600", "430,250,2800,2600"] countMax = 10 # token = lib.get_token("../token.yml") token = "eyJhbGciOiJSUzI1NiIsImtpZCI6IjA4MGU0NWJlNGIzMTE4MzA5M2RhNzUyYmIyZGU5Y2RjYTNlNmU4ZTciLCJ0eXAiOiJKV1QifQ.eyJuYW1lIjoi5Lit5p2R6KaaIiwicGljdHVyZSI6Imh0dHBzOi8vbGgzLmdvb2dsZXVzZXJjb250ZW50LmNvbS8tWHQ1NENUT1pEdVEvQUFBQUFBQUFBQUkvQUFBQUFBQUFBQUEvQUFLV0pKTjg3RWs3MVZqeTZyWTNpeTh6bmFFR0FqeFlpdy9waG90by5qcGciLCJpc3MiOiJodHRwczovL3NlY3VyZXRva2VuLmdvb2dsZS5jb20vY29kaC04MTA0MSIsImF1ZCI6ImNvZGgtODEwNDEiLCJhdXRoX3RpbWUiOjE2MDkzMzYyMDgsInVzZXJfaWQiOiJvZ2Z0UkpaeGxDZzZIRDZMelNPWGZ4ZlBXYUEzIiwic3ViIjoib2dmdFJKWnhsQ2c2SEQ2THpTT1hmeGZQV2FBMyIsImlhdCI6MTYwOTM5MTAyMSwiZXhwIjoxNjA5Mzk0NjIxLCJlbWFpbCI6InNhLnRvcnUuYTQxNjIzQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJmaXJlYmFzZSI6eyJpZGVudGl0aWVzIjp7Imdvb2dsZS5jb20iOlsiMTA0ODEzNDEzMzM0OTI0ODM4NDQzIl0sImVtYWlsIjpbInNhLnRvcnUuYTQxNjIzQGdtYWlsLmNvbSJdfSwic2lnbl9pbl9wcm92aWRlciI6Imdvb2dsZS5jb20ifX0.DQc2txuMzPl7tGdKIRfdIYGfrN9XLchy_QzwwcGa9psT6dA3AXSCwSd-wO45rRslevlOjcJe7cZVHl4iHo9rOPUYLmWhdhRycOhdYRAk0VvibOpcO8KgfJvKl7dGnD_5D1H9Mpyvarw7s7APmTKchnFJeo71uJrdAtDhq51Utg4UNVpGTfG8arjFedptkld2ocmxKgtyj5TQ7-5Dnho_Et0tD2_Ua3FNBo0JvNtUyRtnFML1jetyuLnTRBX30inF_bXh7cEPKtigRnQkFIdMWikeapevB_3HR0c5QbLC5ymo9iNAod34PMg1uabUoRID0letiHtGbM__7dGNZPiQ8w" lib.post(collectionUrl, areas, countMax, token, images, "Collection")
""" Prime numbers taken from [The Prime Pages](https://primes.utm.edu/lists/2small/200bit.html) """ from lib import post, crypto from lib.math import mpz from lib.ntheory import is_prime, next_prime, AdditionChain from itertools import count import time ################### Part 1 ################### post(1) #N = [mpz(2) ** 293 - k for k in [601, 1095, 1389]] N = []; k = (mpz(1) << 1024) - 1 for i in range(3): k = next_prime(k) N.append(k) del k #E = [mpz(2) ** 145 - k for k in [151, 295]][:1] E = [next_prime((mpz(1) << 512) - 1)] for k in N[:3]: assert is_prime(k, 100) post(1, 'p, q and r are all prime numbers') RSA = crypto.RSA(N, crypto.RSA.Exp(E)) x = mpz(time.time()) T = [(k, RSA.test(k, x)) for k in RSA.dec] post(2, 'all decryption results are correct') ################### Part 2 ###################
from lib.math import * from lib import post, hexa from itertools import combinations from libnum.common import randint_bits from random import randint size = 32 p = 11# 1019 m = 29# randint_bits(size) | (1 << (size - 1)) post(1, 'message m: %X, base p: %s', m, p) s = 1 P = to_base(m, p) k = P.degree + 1 n = k + 2*s post(2, 'P: %s, k: %s, n: %s', P, k, n) y = Vector((P(i, p) for i in range(1, n+1)), hexa) post(3, 'vector y: %s', y) d = 2#randint(1, n) z = Vector([9, 2, 6, 5, 8], hexa) #z = Vector((y[i] if i != d else (y[i] + 1) % p for i in range(n)), hexa) post(4, 'vector z: %s, error index: %d', z, d) Q = () T = (e for e in range(1, n+1) if e != d) for A in combinations(T, k): B = lambda x: (e for e in A if e != x) frac = lambda i: ((j * invmod(j - i, p)) % p for j in B(i)) fc = sum(((z[i-1] * prod(frac(i), p)) % p for i in A), p)
import sys sys.path.append('../500_common') import lib import lib_ss if False: images = lib.get_images("data/result.html") else: soup = lib_ss.main( "/Users/nakamurasatoru/git/d_genji/genji_curation/src/500_common/Chrome3post", "Profile 3", 60) images = lib.get_images_by_soup(soup) manifest = "https://kotenseki.nijl.ac.jp/biblio/100266039/manifest" areas = ["2840,390,2160,3010", "550,390,2160,3010"] # 2840,387,2160,3012/full/0/default.jpg countMax = 20 # token = lib.get_token("../token.yml") token = "eyJhbGciOiJSUzI1NiIsImtpZCI6IjA4MGU0NWJlNGIzMTE4MzA5M2RhNzUyYmIyZGU5Y2RjYTNlNmU4ZTciLCJ0eXAiOiJKV1QifQ.eyJuYW1lIjoi5Lit5p2R6KaaIiwicGljdHVyZSI6Imh0dHBzOi8vbGgzLmdvb2dsZXVzZXJjb250ZW50LmNvbS8tWHQ1NENUT1pEdVEvQUFBQUFBQUFBQUkvQUFBQUFBQUFBQUEvQUFLV0pKTjg3RWs3MVZqeTZyWTNpeTh6bmFFR0FqeFlpdy9waG90by5qcGciLCJpc3MiOiJodHRwczovL3NlY3VyZXRva2VuLmdvb2dsZS5jb20vY29kaC04MTA0MSIsImF1ZCI6ImNvZGgtODEwNDEiLCJhdXRoX3RpbWUiOjE2MDkzMzYyMDgsInVzZXJfaWQiOiJvZ2Z0UkpaeGxDZzZIRDZMelNPWGZ4ZlBXYUEzIiwic3ViIjoib2dmdFJKWnhsQ2c2SEQ2THpTT1hmeGZQV2FBMyIsImlhdCI6MTYwOTQ1MzI5NiwiZXhwIjoxNjA5NDU2ODk2LCJlbWFpbCI6InNhLnRvcnUuYTQxNjIzQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJmaXJlYmFzZSI6eyJpZGVudGl0aWVzIjp7Imdvb2dsZS5jb20iOlsiMTA0ODEzNDEzMzM0OTI0ODM4NDQzIl0sImVtYWlsIjpbInNhLnRvcnUuYTQxNjIzQGdtYWlsLmNvbSJdfSwic2lnbl9pbl9wcm92aWRlciI6Imdvb2dsZS5jb20ifX0.oVA1q6JloDC2erOftmaxKytyUdtRr_7Q3d9ooNfkqGDRKN6ax6AKFNbqkkhucckWzAA4FoDrc7x2LQNkXAJ9LUNn6awMCkkT6aaHEJboiEA0NWxwLR12H3MGfduECFSMGt7eZyp51-NsuvnawzmKPkAns0fpvBZHSNSjrSVQEs1fJ86aT_WxY8LksWPlTwM7CoLq_P4bGpbtrMJvNS9ngnZ-_UavMhNuF3L8qLYkPLj4LHER4Bm0JcqkrwUh1d1UEM2-YPo8KyYoBQEIYwNUfusxa0LeHxiMz3ba2bb0XkrR0dA0ndbf7vGtp9LXz6gyT710vMCnsd0up8EaNXv_Kw" lib.post(manifest, areas, countMax, token, images, "Manifest")
def create_repo(name): """Create repository""" return lib.post('/pulp/api/v3/repositories/', data={'name': name})['_href']
def create_distribution(name, base_path, pub): """Start distribution of the repository version, return task""" return lib.post('/pulp/api/v3/distributions/file/file/', data={'name': name, 'base_path': base_path, 'publication': pub})['task']
def create_publication(repo): """Start publication of the repository, return task""" return lib.post('/pulp/api/v3/publications/file/file/', data={'repository': repo})['task']
def start_sync(repo, remote): """Start sync of the remote into the repository, return task""" return lib.post(remote+'sync/', data={'repository': repo, 'mirror': False})['task']
def create_remote(name, url): """Create remote""" return lib.post('/pulp/api/v3/remotes/file/file/', data={'name': name, 'url': url+'PULP_MANIFEST'})['_href']