var e = new Bigint("13");
var n = new Bigint(
"12291619600316736009067207891932417864524294242198302059199949443746751495691171702163250543943403770473173717393157711218344610177015704906656116318503219"
);

var r = "f3987538273649018273648593827364";

var data_len = 31;

function format(num, digit) {
	if (num <= 16) {
		return '0' + num.toString();
	}
	else {
		return num.toString();
	}
}

function str2Bigint(str) {
	var len = str.length;
	var data_str = format(len.toString(16), 2);

	for (var i = 0; i < len; i++) {
		data_str += format(str.charCodeAt(i).toString(16), 2);
	}

	data_str += r.substr(0, data_len - data_str.length);
	return new Bigint( "0x1" + data_str);
}

function Bigint2str(data) {
	return data.toDecimalString(true);
}

function encript(pass) {
	var data = str2Bigint(pass);
	data = Bigint._powmod(data, e, n);
	return Bigint2str(data);
}

function do_encript(pass, enc) {
	var pass_elm = sysGetElement(pass);
	var enc_elm = sysGetElement(enc);

	var pass = pass_elm.value;
	var epass = encript(pass);

	pass_elm.value = '';
	enc_elm.value = epass;
}
