Math-UA.009 Python/c++

Java Python Math-UA.009. Written Homework
MATH-UA-009 — Algebra, Trigonometry and Functions
Professor Charles Stine
Name: Homework Assignment #5
NetID: Due Date: October 14th, 2024, 11:59 PM
• This homework should be submitted via Gradescope by 23:59 on the date
listed above. You can ffnd instructions on how to submit to Gradescope on
our Campuswire channel.
• There are three main ways you might want to write up your work.
– Write on this pdf using a tablet
– Print this worksheet and write in the space provided
– Write your answers on paper, clearly numbering each question and part.
∗ If using either of the last two options, you can use an app such as
OfffceLens to take pictures of your work with your phone and convert
them into a single pdf ffle. Gradescope will only allow pdf ffles to be
uploaded.
• You must show all work. You may receive zero or reduced points for
insufffcient work. Your work must be neatly organised and written.
You may receive zero or reduced points for incoherent work.
• If you are writing your answers on anything other than this sheet, you should
only have one question per page. You can have parts a), b) and c) on the
page for example, but problems 1) and 2) should be on separate pages.
• When uploading to Gradescope, you must match each question to the
page that your answer appears on. If you do not you will be docked a
signiffcant portion of your score.
• When appropriate put a box or circle around your ffnal answer.
• The problems on this assignment will be graded on correctness and completeness.

These problems are designed to be done without a calculator. Whilst there is
nothing stopping you using a calculator when working through this assignment,
be aware of the fact that you are not permitted to use calculators on exams
so you might want to practice without one.
1Math-UA.009. Written Homework
1. Find the domain of each of the following functions. Make sure to show all your
work.
(a) (4 points) f(x) =
1

x
2 − 4x − 12
(b) (3 points) v (t) =
5
t − 3
+

t − 1 + 1
2. For the following functions, ffnd the average rate of change over the given
interval.
(a) (1 point) f(x) = 1 − x
2 over [1, 2]
(b) (1 point) f(x) = x
2 + 3x over [−1, 1]
(c) (1 point) f(x) = x3 − 5x + 2 over [−2, −1]
(d) (1 point) f(x) =
x + 2
2x − 1
over [3, 8]
2Math-UA.009. Written Homework
3. (2 points) The height of an object dropped from the roof of a building is
modeled by the function h(t) = −16t
2 + 64, for 0 ≤ t ≤ 2. Here, h(t) is the
height of the object off the ground in feet t seconds after the object is dropped.
Find and interpret the average rate of change of h over the interval [0, 2].
4. The graph of f(x) is shown below
(a) (2 points) Find the domain and range of the function. Write your answers
in interval notation.
(b) (2 points) For what value(s) of x is f(x) = 9?
(c) (2 points) On what interval(s) is f increasing? On what interval(s) is f
decreasing?
3Math-UA.009. Written Homework
5. A local retailer selling PortaBoy gaming systems is trying to mathematically
model the relationship between the number of PortaBoy systems sold in a week
and the price per system. Assume that this relationship is linear. Suppose 21
systems were sold in a week when the price was $215 per system but when the
systems went on sale for $180 each, weekly sales doubled (that is, they went
up to 42 systems).
(a) (4 points) Find a formula for a linear function p which represents the
price p(x) as a function of the number of systems sold, x.
(b) (3 points) Find the x and y intercepts of the graph of p(x) and sketch
the graph of p(x).
(c) (1 point) If the retailer wants to sell 120 PortaBoys next week, what
should the price be?
(d) (2 points) How many systems would sell if the price per system were set
at $120?
4Math-UA.009. Written Homework
6. (7 points) Given the function h(x) =
2
x
2 + 1
complete the table of values
shown below and use it to sketch h(x). State the domain and range of h using
interval notation and justify your answer for the range.
x h(x)
−2
−1
0
1
2
5Math-UA.009. Written Homework
7. (5 points) Let f(x) = x
2 and g(x) = −(x + 2)2 + 1.
(a) (3 points) Write down the sequence of transformations that need to be
made in order to obtain the graph of g(x) from the graph of f(x). Remember
that order matters.
(b) (2 points) Sketch the graph of f(x) and the graph of g(x) on the same
set of axes, using your answer in part (a)         

kyy@kyy-Legion-Y7000P-IRX9:~$ sudo apt update 命中:1 http://mirrors.aliyun.com/ubuntu focal InRelease 命中:2 http://mirrors.aliyun.com/ubuntu focal-security InRelease 命中:3 http://mirrors.aliyun.com/ubuntu focal-updates InRelease 命中:4 http://mirrors.aliyun.com/ubuntu focal-proposed InRelease 命中:5 http://mirrors.aliyun.com/ubuntu focal-backports InRelease 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完成 有 393 个软件包可以升级。请执行 ‘apt list --upgradable’ 来查看它们。 kyy@kyy-Legion-Y7000P-IRX9:~$ sudo apt upgrade 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完成 正在计算更新... 完成 The following security updates require Ubuntu Pro with 'esm-infra' enabled: libsoup-gnome2.4-1 libpython3.6-minimal python-twisted-core libcups2 libcurl4 gir1.2-soup-2.4 libapt-inst2.0 libssh-4 libpython3.6-dev libgs9 python-twisted-bin libpython3.6-stdlib libcdio17 libfcgi-perl python3-pil libpython3.6 python3.6 libapt-pkg5.0 libprocps6 libvpx5 libsoup2.4-1 python3.6-minimal python-cryptography cups-filters libglib2.0-dev-bin cups-ppdc libcupsmime1 libcurl4-openssl-dev libglib2.0-bin python-pkg-resources libglib2.0-dev ghostscript python-setuptools ghostscript-x libmysqlclient20 libgs9-common cups-filters-core-drivers libcupsppdc1 ca-certificates cups-bsd python-idna cups-core-drivers cups-daemon python3.6-dev python-twisted libcupsimage2 libpoppler73 cups curl libcupscgi1 cups-client cups-ipp-utils libglib2.0-0 python-pil libcurl3-gnutls libssl1.0.0 Learn more about Ubuntu Pro at https://ubuntu.com/pro 下列软件包的版本将保持不变: appstream colord cups cups-bsd cups-client cups-core-drivers cups-daemon cups-filters cups-filters-core-drivers cups-ipp-utils cups-ppdc curl cython dash deja-dup docutils-common dpkg evolution-data-server fwupd fwupdate gazebo9 gazebo9-common gazebo9-plugin-base gdal-data ghostscript ghostscript-x gir1.2-freedesktop gir1.2-glib-2.0 gir1.2-gnomedesktop-3.0 gir1.2-gst-plugins-base-1.0 gir1.2-gtk-2.0 gir1.2-gtk-3.0 gir1.2-ibus-1.0 gir1.2-javascriptcoregtk-4.0 gir1.2-pango-1.0 gir1.2-polkit-1.0 gir1.2-rb-3.0 gir1.2-soup-2.4 gir1.2-webkit2-4.0 gjs glib-networking glib-networking-services gnome-calendar gnome-control-center gnome-control-center-data gnome-initial-setup gnome-power-manager gnome-session-bin gnome-session-common gnome-settings-daemon gnome-shell gnome-shell-common gnome-shell-extension-appindicator gnome-shell-extension-ubuntu-dock gnome-software gnome-software-common gnome-software-plugin-snap gnome-startup-applications gsettings-desktop-schemas gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-pulseaudio gstreamer1.0-x gtk-update-icon-cache gvfs gvfs-backends gvfs-bin gvfs-common gvfs-daemons gvfs-fuse gvfs-libs hplip hplip-data ibus ibus-gtk ibus-gtk3 libalgorithm-diff-xs-perl libappstream-glib8 libappstream4 libboost-atomic-dev libboost-chrono-dev libboost-container-dev libboost-context-dev libboost-coroutine-dev libboost-date-time-dev libboost-dev libboost-exception-dev libboost-fiber-dev libboost-filesystem-dev libboost-graph-dev libboost-graph-parallel-dev libboost-iostreams-dev libboost-locale-dev libboost-log-dev libboost-math-dev libboost-mpi-dev libboost-mpi-python-dev libboost-numpy-dev libboost-program-options-dev libboost-python-dev libboost-random-dev libboost-regex-dev libboost-serialization-dev libboost-stacktrace-dev libboost-system-dev libboost-test-dev libboost-thread-dev libboost-timer-dev libboost-tools-dev libboost-type-erasure-dev libboost-wave-dev libcairo-gobject-perl libcairo-perl libcups2 libcupsimage2 libcurl3-gnutls libcurl4 libcurl4-openssl-dev libdazzle-1.0-0 libebackend-1.2-10 libegl-mesa0 libfcgi-perl libfile-fcntllock-perl libfwupd2 libgail-3-0 libgail-common libgail18 libgazebo9 libgazebo9-dev libgbm1 libgcab-1.0-0 libgdal-dev libgirepository-1.0-1 libgjs0g libgl1-mesa-dri libglapi-mesa libglib-object-introspection-perl libglib-perl libglib2.0-0 libglib2.0-bin libglib2.0-dev libglib2.0-dev-bin libglibmm-2.4-1v5 libglx-mesa0 libgs9 libgs9-common libgstreamer-plugins-base1.0-0 libgstreamer-plugins-good1.0-0 libgtk-3-0 libgtk-3-bin libgtk2.0-0 libgtk2.0-bin libgtk2.0-dev libgtkmm-3.0-1v5 libhdf5-dev libhdf5-openmpi-dev libhpmud0 libhtml-parser-perl libhttp-date-perl libhttp-message-perl libibus-1.0-5 libignition-common libignition-common-dev libio-socket-ssl-perl libjavascriptcoregtk-4.0-18 liblocale-gettext-perl libnautilus-extension1a libnet-dbus-perl libnet-libidn-perl libnet-ssleay-perl libnetcdf-c++4 libnetcdf-cxx-legacy-dev libnetcdf-dev libopencv-calib3d-dev libopencv-contrib-dev libopencv-core-dev libopencv-dev libopencv-features2d-dev libopencv-flann-dev libopencv-highgui-dev libopencv-imgcodecs-dev libopencv-imgproc-dev libopencv-ml-dev libopencv-objdetect-dev libopencv-photo-dev libopencv-shape-dev libopencv-stitching-dev libopencv-superres-dev libopencv-ts-dev libopencv-video-dev libopencv-videoio-dev libopencv-videostab-dev libopencv-viz-dev libpango-1.0-0 libpango1.0-dev libpangocairo-1.0-0 libpangoft2-1.0-0 libpangomm-1.4-1v5 libpangoxft-1.0-0 libpcl-dev libpolkit-agent-1-0 libpolkit-gobject-1-0 libpython3-dev libpython3-stdlib libqt5concurrent5 libqt5core5a libqt5dbus5 libqt5designer5 libqt5designercomponents5 libqt5gui5 libqt5help5 libqt5network5 libqt5opengl5 libqt5opengl5-dev libqt5positioning5 libqt5printsupport5 libqt5qml5 libqt5quick5 libqt5quickparticles5 libqt5quicktest5 libqt5quickwidgets5 libqt5sensors5 libqt5sql5 libqt5sql5-sqlite libqt5svg5 libqt5test5 libqt5webchannel5 libqt5webkit5 libqt5webkit5-dev libqt5widgets5 libqt5xml5 libqtpropertybrowser4 libqwt-headers libqwt-qt5-6 libqwt-qt5-dev libreoffice-avmedia-backend-gstreamer libreoffice-base-core libreoffice-calc libreoffice-common libreoffice-core libreoffice-draw libreoffice-gnome libreoffice-gtk3 libreoffice-help-en-us libreoffice-help-zh-cn libreoffice-impress libreoffice-l10n-zh-cn libreoffice-math libreoffice-ogltrans libreoffice-style-breeze libreoffice-style-galaxy libreoffice-style-tango libreoffice-writer librhythmbox-core10 libsane-common libsane-hpaio libsane1 libsimbody-dev libsmbclient libsocket6-perl libsoup-gnome2.4-1 libsoup2.4-1 libssh-4 libsub-name-perl libtext-charwidth-perl libtext-iconv-perl libtinyxml2-dev libvtk6-dev libvtk6-qt-dev libvtk6.3 libvtk6.3-qt libwbclient0 libwebkit2gtk-4.0-37 libwww-perl libxml-libxml-perl libxml-parser-perl mutter nautilus nautilus-data orca pavucontrol perl perl-base policykit-1 printer-driver-brlaser printer-driver-gutenprint printer-driver-hpcups printer-driver-postscript-hp pyqt5-dev python-asn1crypto python-attr python-automat python-backports.functools-lru-cache python-cairo python-cffi-backend python-chardet python-concurrent.futures python-constantly python-cryptography python-dateutil python-docutils python-enum34 python-hyperlink python-idna python-ipaddress python-netifaces python-nose python-numpy python-olefile python-opengl python-openssl python-pam python-pil python-pkg-resources python-psutil python-pyasn1 python-pyasn1-modules python-pycryptodome python-pygments python-pyparsing python-roman python-service-identity python-setuptools python-sip python-sip-dev python-six python-subprocess32 python-tk python-tz python-u-msgpack python-wxgtk3.0 python-wxtools python-wxversion python-yaml python-zope.interface python3 python3-apt python3-brlapi python3-cairo python3-cffi-backend python3-crypto python3-cups python3-dbus python3-dev python3-distutils python3-gdbm python3-gi python3-gi-cairo python3-lib2to3 python3-markupsafe python3-minimal python3-netifaces python3-pil python3-protobuf python3-renderpm python3-reportlab python3-reportlab-accel python3-simplejson python3-systemd python3-uno python3-yaml qt5-assistant qt5-gtk-platformtheme qt5-qmake qt5-qmake-bin qt5-qmltooling-plugins qtbase5-dev qtbase5-dev-tools qtdeclarative5-dev qttools5-dev qttools5-dev-tools qttools5-private-dev remmina remmina-common remmina-plugin-rdp remmina-plugin-secret remmina-plugin-vnc rhythmbox rhythmbox-plugins samba-libs sane-utils simple-scan sip-dev ubuntu-desktop ubuntu-session ubuntu-software unattended-upgrades ure xdg-desktop-portal xdg-desktop-portal-gtk 升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 393 个软件包未被升级。
06-18
__author__ = 'admin' # --*--coding:utf-8--*-- import execjs def exec_JsFile(text='admin', param=None): js_file = \ ''' /** * Created by admin on 2016/3/16. */ encrypt = function (val, param){ //n, e, // Copyright (c) 2005 Tom Wu // All Rights Reserved. // See "LICENSE" for details. // Basic JavaScript BN library - subset useful for RSA encryption. // Bits per digit var dbits; // JavaScript engine analysis var canary = 0xdeadbeefcafe; var j_lm = ((canary&0xffffff)==0xefcafe); // (public) Constructor function BigInteger(a,b,c) { if(a != null){ if("number" == typeof a){ this.fromNumber(a, b, c); }else if(b == null && "string" != typeof a){ this.fromString(a, 256); }else{ this.fromString(a, b); } } } // return new, unset BigInteger function nbi() { return new BigInteger(null); } // am: Compute w_j += (x*this_i), propagate carries, // c is initial carry, returns final carry. // c < 3*dvalue, x < 2*dvalue, this_i < dvalue // We need to select the fastest one that works in this environment. // am1: use a single mult and divide to get the high bits, // max digit bits should be 26 because // max internal value = 2*dvalue^2-2*dvalue (< 2^53) function am1(i,x,w,j,c,n) { while(--n >= 0) { var v = x*this[i++]+w[j]+c; c = Math.floor(v/0x4000000); w[j++] = v&0x3ffffff; } return c; } // am2 avoids a big mult-and-extract completely. // Max digit bits should be <= 30 because we do bitwise ops // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31) function am2(i,x,w,j,c,n) { var xl = x&0x7fff, xh = x>>15; while(--n >= 0) { var l = this[i]&0x7fff; var h = this[i++]>>15; var m = xh*l+h*xl; l = xl*l+((m&0x7fff)<<15)+w[j]+(c&0x3fffffff); c = (l>>>30)+(m>>>15)+xh*h+(c>>>30); w[j++] = l&0x3fffffff; } return c; } // Alternately, set max digit bits to 28 since some // browsers slow down when dealing with 32-bit numbers. function am3(i,x,w,j,c,n) { var xl = x&0x3fff, xh = x>>14; while(--n >= 0) { var l = this[i]&0x3fff; var h = this[i++]>>14; var m = xh*l+h*xl; l = xl*l+((m&0x3fff)<<14)+w[j]+c; c = (l>>28)+(m>>14)+xh*h; w[j++] = l&0xfffffff; } return c; } // Window.prototype.navigator.app // abbbb = Window.navigator.appName //if(j_lm && (window.prototype.navigator.appName == "Microsoft Internet Explorer")) { // BigInteger.prototype.am = am2; // dbits = 30; //}else if(j_lm && (window.prototype.navigator.appName != "Netscape")) { // BigInteger.prototype.am = am1; // dbits = 26; //}else { // Mozilla/Netscape seems to prefer am3 // BigInteger.prototype.am = am3; // dbits = 28; //} BigInteger.prototype.am = am3; dbits = 28; BigInteger.prototype.DB = dbits; BigInteger.prototype.DM = ((1<<dbits)-1); BigInteger.prototype.DV = (1<<dbits); var BI_FP = 52; BigInteger.prototype.FV = Math.pow(2,BI_FP); BigInteger.prototype.F1 = BI_FP-dbits; BigInteger.prototype.F2 = 2*dbits-BI_FP; // Digit conversions var BI_RM = "0123456789abcdefghijklmnopqrstuvwxyz"; var BI_RC = new Array(); var rr,vv; rr = "0".charCodeAt(0); for(vv = 0; vv <= 9; ++vv){ BI_RC[rr++] = vv; } rr = "a".charCodeAt(0); for(vv = 10; vv < 36; ++vv){ BI_RC[rr++] = vv; } rr = "A".charCodeAt(0); for(vv = 10; vv < 36; ++vv){ BI_RC[rr++] = vv; } function int2char(n) { return BI_RM.charAt(n); } function intAt(s,i) { var c = BI_RC[s.charCodeAt(i)]; return (c==null)?-1:c; } // (protected) copy this to r function bnpCopyTo(r) { for(var i = this.t-1; i >= 0; --i){ r[i] = this[i]; }; r.t = this.t; r.s = this.s; } // (protected) set from integer value x, -DV <= x < DV function bnpFromInt(x) { this.t = 1; this.s = (x<0)?-1:0; if(x > 0){ this[0] = x; }else if(x < -1){ this[0] = x+this.DV; }else{ this.t = 0; } } // return bigint initialized to value function nbv(i) { var r = nbi(); r.fromInt(i); return r; } // (protected) set from string and radix function bnpFromString(s,b) { var k; if(b == 16){ k = 4; }else if(b == 8){ k = 3; }else if(b == 256){ k = 8; // byte array }else if(b == 2){ k = 1; }else if(b == 32){ k = 5; }else if(b == 4){ k = 2; }else{ this.fromRadix(s,b); return; }; this.t = 0; this.s = 0; var i = s.length, mi = false, sh = 0; while(--i >= 0) { var x = (k==8)?s[i]&0xff:intAt(s,i); if(x < 0) { if(s.charAt(i) == "-") {mi = true;} continue; }; mi = false; if(sh == 0){ this[this.t++] = x; }else if(sh+k > this.DB) { this[this.t-1] |= (x&((1<<(this.DB-sh))-1))<<sh; this[this.t++] = (x>>(this.DB-sh)); } else this[this.t-1] |= x<<sh; sh += k; if(sh >= this.DB) sh -= this.DB; }; if(k == 8 && (s[0]&0x80) != 0) { this.s = -1; if(sh > 0){ this[this.t-1] |= ((1<<(this.DB-sh))-1)<<sh; } }; this.clamp(); if(mi){ BigInteger.ZERO.subTo(this,this) }; } // (protected) clamp off excess high words function bnpClamp() { var c = this.s&this.DM; while(this.t > 0 && this[this.t-1] == c){ --this.t; } } // (public) return string representation in given radix function bnToString(b) { if(this.s < 0){ return "-"+this.negate().toString(b);} var k; if(b == 16){k = 4;} else if(b == 8){ k = 3;} else if(b == 2){ k = 1;} else if(b == 32){ k = 5;} else if(b == 4){ k = 2;} else{ return this.toRadix(b);} var km = (1<<k)-1, d, m = false, r = "", i = this.t; var p = this.DB-(i*this.DB)%k; if(i-- > 0) { if(p < this.DB && (d = this[i]>>p) > 0) { m = true; r = int2char(d); } while(i >= 0) { if(p < k) { d = (this[i]&((1<<p)-1))<<(k-p); d |= this[--i]>>(p+=this.DB-k); }else { d = (this[i]>>(p-=k))&km; if(p <= 0) { p += this.DB; --i; } } if(d > 0){ m = true;} if(m){ r += int2char(d);} } } return m?r:"0"; } // (public) -this function bnNegate() { var r = nbi(); BigInteger.ZERO.subTo(this,r); return r; } // (public) |this| function bnAbs() { return (this.s<0)?this.negate():this; } // (public) return + if this > a, - if this < a, 0 if equal function bnCompareTo(a) { var r = this.s-a.s; if(r != 0){ return r;} var i = this.t; r = i-a.t; if(r != 0){ return (this.s<0)?-r:r;} while(--i >= 0){ if((r=this[i]-a[i]) != 0) return r;} return 0; } // returns bit length of the integer x function nbits(x) { var r = 1, t; if((t=x>>>16) != 0) { x = t; r += 16; } if((t=x>>8) != 0) { x = t; r += 8; } if((t=x>>4) != 0) { x = t; r += 4; } if((t=x>>2) != 0) { x = t; r += 2; } if((t=x>>1) != 0) { x = t; r += 1; } return r; } // (public) return the number of bits in "this" function bnBitLength() { if(this.t <= 0) return 0; return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM)); } // (protected) r = this << n*DB function bnpDLShiftTo(n,r) { var i; for(i = this.t-1; i >= 0; --i){ r[i+n] = this[i];} for(i = n-1; i >= 0; --i){ r[i] = 0;} r.t = this.t+n; r.s = this.s; } // (protected) r = this >> n*DB function bnpDRShiftTo(n,r) { for(var i = n; i < this.t; ++i){ r[i-n] = this[i];} r.t = Math.max(this.t-n,0); r.s = this.s; } // (protected) r = this << n function bnpLShiftTo(n,r) { var bs = n%this.DB; var cbs = this.DB-bs; var bm = (1<<cbs)-1; var ds = Math.floor(n/this.DB), c = (this.s<<bs)&this.DM, i; for(i = this.t-1; i >= 0; --i) { r[i+ds+1] = (this[i]>>cbs)|c; c = (this[i]&bm)<<bs; } for(i = ds-1; i >= 0; --i){ r[i] = 0;} r[ds] = c; r.t = this.t+ds+1; r.s = this.s; r.clamp(); } // (protected) r = this >> n function bnpRShiftTo(n,r) { r.s = this.s; var ds = Math.floor(n/this.DB); if(ds >= this.t) { r.t = 0; return; } var bs = n%this.DB; var cbs = this.DB-bs; var bm = (1<<bs)-1; r[0] = this[ds]>>bs; for(var i = ds+1; i < this.t; ++i) { r[i-ds-1] |= (this[i]&bm)<<cbs; r[i-ds] = this[i]>>bs; } if(bs > 0){ r[this.t-ds-1] |= (this.s&bm)<<cbs;} r.t = this.t-ds; r.clamp(); } // (protected) r = this - a function bnpSubTo(a,r) { var i = 0, c = 0, m = Math.min(a.t,this.t); while(i < m) { c += this[i]-a[i]; r[i++] = c&this.DM; c >>= this.DB; } if(a.t < this.t) { c -= a.s; while(i < this.t) { c += this[i]; r[i++] = c&this.DM; c >>= this.DB; } c += this.s; } else { c += this.s; while(i < a.t) { c -= a[i]; r[i++] = c&this.DM; c >>= this.DB; } c -= a.s; } r.s = (c<0)?-1:0; if(c < -1) r[i++] = this.DV+c; else if(c > 0) r[i++] = c; r.t = i; r.clamp(); } // (protected) r = this * a, r != this,a (HAC 14.12) // "this" should be the larger one if appropriate. function bnpMultiplyTo(a,r) { var x = this.abs(), y = a.abs(); var i = x.t; r.t = i+y.t; while(--i >= 0) r[i] = 0; for(i = 0; i < y.t; ++i) r[i+x.t] = x.am(0,y[i],r,i,0,x.t); r.s = 0; r.clamp(); if(this.s != a.s) BigInteger.ZERO.subTo(r,r); } // (protected) r = this^2, r != this (HAC 14.16) function bnpSquareTo(r) { var x = this.abs(); var i = r.t = 2*x.t; while(--i >= 0) { r[i] = 0; } for(i = 0; i < x.t-1; ++i) { var c = x.am(i,x[i],r,2*i,0,1); if((r[i+x.t]+=x.am(i+1,2*x[i],r,2*i+1,c,x.t-i-1)) >= x.DV) { r[i+x.t] -= x.DV; r[i+x.t+1] = 1; } } if(r.t > 0) { r[r.t-1] += x.am(i,x[i],r,2*i,0,1); } r.s = 0; r.clamp(); } // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20) // r != q, this != m. q or r may be null. function bnpDivRemTo(m,q,r) { var pm = m.abs(); if(pm.t <= 0) {return;} var pt = this.abs(); if(pt.t < pm.t) { if(q != null) {q.fromInt(0);} if(r != null) {this.copyTo(r);} return; } if(r == null) {r = nbi();} var y = nbi(), ts = this.s, ms = m.s; var nsh = this.DB-nbits(pm[pm.t-1]); // normalize modulus if(nsh > 0) { pm.lShiftTo(nsh,y); pt.lShiftTo(nsh,r); }else { pm.copyTo(y); pt.copyTo(r); } var ys = y.t; var y0 = y[ys-1]; if(y0 == 0) {return;} var yt = y0*(1<<this.F1)+((ys>1)?y[ys-2]>>this.F2:0); var d1 = this.FV/yt, d2 = (1<<this.F1)/yt, e = 1<<this.F2; var i = r.t, j = i-ys, t = (q==null)?nbi():q; y.dlShiftTo(j,t); if(r.compareTo(t) >= 0) { r[r.t++] = 1; r.subTo(t,r); } BigInteger.ONE.dlShiftTo(ys,t); t.subTo(y,y); // "negative" y so we can replace sub with am later while(y.t < ys) {y[y.t++] = 0;} while(--j >= 0) { // Estimate quotient digit var qd = (r[--i]==y0)?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2); if((r[i]+=y.am(0,qd,r,j,0,ys)) < qd) { // Try it out y.dlShiftTo(j,t); r.subTo(t,r); while(r[i] < --qd) { r.subTo(t,r); } } } if(q != null) { r.drShiftTo(ys,q); if(ts != ms) {BigInteger.ZERO.subTo(q,q);} } r.t = ys; r.clamp(); if(nsh > 0) { r.rShiftTo(nsh,r); } // Denormalize remainder if(ts < 0) { BigInteger.ZERO.subTo(r,r); } } // (public) this mod a function bnMod(a) { var r = nbi(); this.abs().divRemTo(a,null,r); if(this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) {a.subTo(r,r);} return r; } // Modular reduction using "classic" algorithm function Classic(m) { this.m = m; } function cConvert(x) { if(x.s < 0 || x.compareTo(this.m) >= 0) {return x.mod(this.m);} else {return x;} } function cRevert(x) { return x; } function cReduce(x) { x.divRemTo(this.m,null,x); } function cMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); } function cSqrTo(x,r) { x.squareTo(r); this.reduce(r); } Classic.prototype.convert = cConvert; Classic.prototype.revert = cRevert; Classic.prototype.reduce = cReduce; Classic.prototype.mulTo = cMulTo; Classic.prototype.sqrTo = cSqrTo; // (protected) return "-1/this % 2^DB"; useful for Mont. reduction // justification: // xy == 1 (mod m) // xy = 1+km // xy(2-xy) = (1+km)(1-km) // x[y(2-xy)] = 1-k^2m^2 // x[y(2-xy)] == 1 (mod m^2) // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2 // should reduce x and y(2-xy) by m^2 at each step to keep size bounded. // JS multiply "overflows" differently from C/C++, so care is needed here. function bnpInvDigit() { if(this.t < 1) {return 0;} var x = this[0]; if((x&1) == 0) {return 0;} var y = x&3; // y == 1/x mod 2^2 y = (y*(2-(x&0xf)*y))&0xf; // y == 1/x mod 2^4 y = (y*(2-(x&0xff)*y))&0xff; // y == 1/x mod 2^8 y = (y*(2-(((x&0xffff)*y)&0xffff)))&0xffff; // y == 1/x mod 2^16 // last step - calculate inverse mod DV directly; // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints y = (y*(2-x*y%this.DV))%this.DV; // y == 1/x mod 2^dbits // we really want the negative inverse, and -DV < y < DV return (y>0)?this.DV-y:-y; } // Montgomery reduction function Montgomery(m) { this.m = m; this.mp = m.invDigit(); this.mpl = this.mp&0x7fff; this.mph = this.mp>>15; this.um = (1<<(m.DB-15))-1; this.mt2 = 2*m.t; } // xR mod m function montConvert(x) { var r = nbi(); x.abs().dlShiftTo(this.m.t,r); r.divRemTo(this.m,null,r); if(x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) {this.m.subTo(r,r);} return r; } // x/R mod m function montRevert(x) { var r = nbi(); x.copyTo(r); this.reduce(r); return r; } // x = x/R mod m (HAC 14.32) function montReduce(x) { while(x.t <= this.mt2) // pad x so am has enough room later x[x.t++] = 0; for(var i = 0; i < this.m.t; ++i) { // faster way of calculating u0 = x[i]*mp mod DV var j = x[i]&0x7fff; var u0 = (j*this.mpl+(((j*this.mph+(x[i]>>15)*this.mpl)&this.um)<<15))&x.DM; // use am to combine the multiply-shift-add into one call j = i+this.m.t; x[j] += this.m.am(0,u0,x,i,0,this.m.t); // propagate carry while(x[j] >= x.DV) { x[j] -= x.DV; x[++j]++; } } x.clamp(); x.drShiftTo(this.m.t,x); if(x.compareTo(this.m) >= 0) {x.subTo(this.m,x);} } // r = "x^2/R mod m"; x != r function montSqrTo(x,r) { x.squareTo(r); this.reduce(r); } // r = "xy/R mod m"; x,y != r function montMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); } Montgomery.prototype.convert = montConvert; Montgomery.prototype.revert = montRevert; Montgomery.prototype.reduce = montReduce; Montgomery.prototype.mulTo = montMulTo; Montgomery.prototype.sqrTo = montSqrTo; // (protected) true iff this is even function bnpIsEven() { return ((this.t>0)?(this[0]&1):this.s) == 0; } // (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79) function bnpExp(e,z) { if(e > 0xffffffff || e < 1){ return BigInteger.ONE; } var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-1; g.copyTo(r); while(--i >= 0){ z.sqrTo(r,r2); if((e&(1<<i)) > 0){ z.mulTo(r2,g,r); }else{ var t = r; r = r2; r2 = t; } } return z.revert(r); } // (public) this^e % m, 0 <= e < 2^32 function bnModPowInt(e,m) { var z; if(e < 256 || m.isEven()) z = new Classic(m); else z = new Montgomery(m); return this.exp(e,z); } // protected BigInteger.prototype.copyTo = bnpCopyTo; BigInteger.prototype.fromInt = bnpFromInt; BigInteger.prototype.fromString = bnpFromString; BigInteger.prototype.clamp = bnpClamp; BigInteger.prototype.dlShiftTo = bnpDLShiftTo; BigInteger.prototype.drShiftTo = bnpDRShiftTo; BigInteger.prototype.lShiftTo = bnpLShiftTo; BigInteger.prototype.rShiftTo = bnpRShiftTo; BigInteger.prototype.subTo = bnpSubTo; BigInteger.prototype.multiplyTo = bnpMultiplyTo; BigInteger.prototype.squareTo = bnpSquareTo; BigInteger.prototype.divRemTo = bnpDivRemTo; BigInteger.prototype.invDigit = bnpInvDigit; BigInteger.prototype.isEven = bnpIsEven; BigInteger.prototype.exp = bnpExp; // public BigInteger.prototype.toString = bnToString; BigInteger.prototype.negate = bnNegate; BigInteger.prototype.abs = bnAbs; BigInteger.prototype.compareTo = bnCompareTo; BigInteger.prototype.bitLength = bnBitLength; BigInteger.prototype.mod = bnMod; BigInteger.prototype.modPowInt = bnModPowInt; // "constants" BigInteger.ZERO = nbv(0); BigInteger.ONE = nbv(1); //end of jsbn.js // prng4.js - uses Arcfour as a PRNG function Arcfour() { this.i = 0; this.j = 0; this.S = new Array(); } // Initialize arcfour context from key, an array of ints, each from [0..255] function ARC4init(key) { var i, j, t; for(i = 0; i < 256; ++i) this.S[i] = i; j = 0; for(i = 0; i < 256; ++i) { j = (j + this.S[i] + key[i % key.length]) & 255; t = this.S[i]; this.S[i] = this.S[j]; this.S[j] = t; } this.i = 0; this.j = 0; } function ARC4next() { var t; this.i = (this.i + 1) & 255; this.j = (this.j + this.S[this.i]) & 255; t = this.S[this.i]; this.S[this.i] = this.S[this.j]; this.S[this.j] = t; return this.S[(t + this.S[this.i]) & 255]; } Arcfour.prototype.init = ARC4init; Arcfour.prototype.next = ARC4next; // Plug in your RNG constructor here function prng_newstate() { return new Arcfour(); } // Pool size must be a multiple of 4 and greater than 32. // An array of bytes the size of the pool will be passed to init() var rng_psize = 256; //end of prng4.js // Random number generator - requires a PRNG backend, e.g. prng4.js // For best results, put code like // <body onClick='rng_seed_time();' onKeyPress='rng_seed_time();'> // in your main HTML document. var rng_state; var rng_pool; var rng_pptr; // Mix in a 32-bit integer into the pool function rng_seed_int(x) { rng_pool[rng_pptr++] ^= x & 255; rng_pool[rng_pptr++] ^= (x >> 8) & 255; rng_pool[rng_pptr++] ^= (x >> 16) & 255; rng_pool[rng_pptr++] ^= (x >> 24) & 255; if(rng_pptr >= rng_psize) { rng_pptr -= rng_psize; } } // Mix in the current time (w/milliseconds) into the pool function rng_seed_time() { rng_seed_int(new Date().getTime()); } // Initialize the pool with junk if needed. if(rng_pool == null) { rng_pool = new Array(); rng_pptr = 0; var t; //if(window.crypto && window.crypto.getRandomValues) { // // Use webcrypto if available // var ua = new Uint8Array(32); // window.crypto.getRandomValues(ua); // for(t = 0; t < 32; ++t){ // rng_pool[rng_pptr++] = ua[t]; // } //} //if(navigator.appName == "Netscape" && navigator.appVersion < "5" && window.crypto) { // // Extract entropy (256 bits) from NS4 RNG if available // var z = window.crypto.random(32); // for(t = 0; t < z.length; ++t) // rng_pool[rng_pptr++] = z.charCodeAt(t) & 255; //} //while(rng_pptr < rng_psize) { // extract some randomness from Math.random() // t = Math.floor(65536 * Math.random()); // rng_pool[rng_pptr++] = t >>> 8; // rng_pool[rng_pptr++] = t & 255; //} rng_pptr = 0; rng_seed_time(); //rng_seed_int(window.screenX); //rng_seed_int(window.screenY); } function rng_get_byte() { if(rng_state == null) { rng_seed_time(); rng_state = prng_newstate(); rng_state.init(rng_pool); for(rng_pptr = 0; rng_pptr < rng_pool.length; ++rng_pptr){ rng_pool[rng_pptr] = 0; } rng_pptr = 0; //rng_pool = null; } // TODO: allow reseeding after first request return rng_state.next(); } function rng_get_bytes(ba) { var i; for(i = 0; i < ba.length; ++i){ ba[i] = rng_get_byte(); } } function SecureRandom() {} SecureRandom.prototype.nextBytes = rng_get_bytes; //end of rng.js // Depends on jsbn.js and rng.js // Version 1.1: support utf-8 encoding in pkcs1pad2 // convert a (hex) string to a bignum object function parseBigInt(str,r) { return new BigInteger(str,r); } /*function linebrk(s,n) { var ret = ""; var i = 0; while(i + n < s.length) { ret += s.substring(i,i+n) + ""; i += n; }; return ret + s.substring(i,s.length); }*/ function byte2Hex(b) { if(b < 0x10){ return "0" + b.toString(16); }else{ return b.toString(16); } } // PKCS#1 (type 2, random) pad input string s to n bytes, and return a bigint /* if(n < s.length + 11) { // TODO: fix for utf-8 alert("Message too long for RSA"); return null; } var ba = new Array(); var i = s.length - 1; while(i >= 0 && n > 0) { var c = s.charCodeAt(i--); if(c < 128) { // encode using utf-8 ba[--n] = c; } else if((c > 127) && (c < 2048)) { ba[--n] = (c & 63) | 128; ba[--n] = (c >> 6) | 192; } else { ba[--n] = (c & 63) | 128; ba[--n] = ((c >> 6) & 63) | 128; ba[--n] = (c >> 12) | 224; } } ba[--n] = 0; var rng = new SecureRandom(); var x = new Array(); while(n > 2) { // random non-zero pad x[0] = 0; while(x[0] == 0) rng.nextBytes(x); ba[--n] = x[0]; } ba[--n] = 2; ba[--n] = 0; return new BigInteger(ba); }*/ // "empty" RSA key constructor function RSAKey() { this.n = null; this.e = 0; this.d = null; this.p = null; this.q = null; this.dmp1 = null; this.dmq1 = null; this.coeff = null; } // Set the public key fields N and e from hex strings function RSASetPublic(N,E) { if(N != null && E != null && N.length > 0 && E.length > 0) { this.n = parseBigInt(N,16); this.e = parseInt(E,16); }else{ alert("Invalid RSA public key"); } } // Perform raw public operation on "x": return x^e (mod n) function RSADoPublic(x) { return x.modPowInt(this.e, this.n); } function nopadding(s,n) { if(n < s.length) { // TODO: fix for utf-8 alert("Message too long for RSA"); return null; }; //console.log(s, n) var ba = new Array(); var i = 0; var j = 0; while(i < s.length && j < n) { var c = s.charCodeAt(i++); if(c < 128) { // encode using utf-8 ba[j++] = c; }else if((c > 127) && (c < 2048)){ ba[j++] = (c & 63) | 128; ba[j++] = (c >> 6) | 192; }else{ ba[j++] = (c & 63) | 128; ba[j++] = ((c >> 6) & 63) | 128; ba[j++] = (c >> 12) | 224; } }; while (j < n) { ba[j++] = 0; }; //console.log(ba) return new BigInteger(ba); } // Return the PKCS#1 RSA encryption of "text" as an even-length hex string function RSAEncrypt(text) { var m = nopadding(text, (this.n.bitLength()+7)>>3 ); if(m == null){ return null }; var c = this.doPublic(m); //console.log(c); if(c == null){ return null }; var h = c.toString(16); if((h.length & 1) == 0){ return h; }else{ return "0" + h }; } // Return the PKCS#1 RSA encryption of "text" as a Base64-encoded string //function RSAEncryptB64(text) { // var h = this.encrypt(text); // if(h) return hex2b64(h); else return null; //} // protected RSAKey.prototype.doPublic = RSADoPublic; // public RSAKey.prototype.setPublic = RSASetPublic; RSAKey.prototype.encrypt = RSAEncrypt; //RSAKey.prototype.encrypt_b64 = RSAEncryptB64; //calculate rsa value var rsaObj = new RSAKey(); var n = param[0]; var e = param[1]; rsaObj.setPublic(n, e); var result = rsaObj.encrypt(val); //var result = linebrk(res, 64); //console.log(result) if(result.length != 256){ //$.su.encrypt(n,e,val); var l = Math.abs(256 - result.length); for (var i = 0; i < l; i++){ result = "0" + result; }; } return result; } ''' if param is None: param = [] param.append(0) param.append(0) param[1] = '10001' # //e param[0] = 'D1E79FF135D14E342D76185C23024E6DEAD4D6EC2C317A526C811E83538EA4E5ED8E1B0EEE5CE26E3C1B6A5' \ 'F1FE11FA804F28B7E8821CA90AFA5B2F300DF99FDA27C9D2131E031EA11463C47944C05005EF4C1CE932D7F' \ '4A87C7563581D9F27F0C305023FCE94997EC7D790696E784357ED803A610EBB71B12A8BE5936429BFD' # param[0] = 'B6FEE0E638E2EF995EEB9AAFE1810FB04E19FC0166B06B484FD3D0CA77F911910CB3B649D290113B0B9A065F23' \ # '78A5A35987BCBED056C47A8387E4C6BD00A329B8845A349A176EEA78DDA8E4CD0770F19CE66570EC683D1A6BDD' \ # '99505C052C00ED9C59F511F29DC5B90B81D2C215B39850C38AACC031FAF594EF2DCA87BD45C9' ctx = execjs.compile(js_file) result = ctx.call("encrypt", text, param) return result def Encrypt(text='111111', param=None): """ :param text: :param param: the public key n, e ( 65537 ,) :return: the encryption result or None """ if param is None: param = [] param.append(0) param.append(0) param[1] = '10001' # //e to do the mod 2^e(mode(param[0]) 65537 param[0] = 'D1E79FF135D14E342D76185C23024E6DEAD4D6EC2C317A526C811E83538EA4E5ED8E1B0EEE5CE26E3C1B6A5' \ 'F1FE11FA804F28B7E8821CA90AFA5B2F300DF99FDA27C9D2131E031EA11463C47944C05005EF4C1CE932D7F' \ '4A87C7563581D9F27F0C305023FCE94997EC7D790696E784357ED803A610EBB71B12A8BE5936429BFD' # param[0] = 'B6FEE0E638E2EF995EEB9AAFE1810FB04E19FC0166B06B484FD3D0CA77F911910CB3B649D290113B0B9A065F23' \ # '78A5A35987BCBED056C47A8387E4C6BD00A329B8845A349A176EEA78DDA8E4CD0770F19CE66570EC683D1A6BDD' \ # '99505C052C00ED9C59F511F29DC5B90B81D2C215B39850C38AACC031FAF594EF2DCA87BD45C9' # param[0] as the public key form the server try: result = exec_JsFile(text=text, param=param) return result except Exception as ex: return None if __name__ == '__main__': passwd = '21dd905725bef0483f91a45c954f26dd0c6640329cf266f043d8a386855b22d2e056c' \ '0411a8f6246fcbb8e1804a5d433a92334b312a403616eb03ac17051a3f903f39c92a7' \ 'e512fe5b8deac4e455fbe532cd919749a75ebf8e3ed0927cf5277c2d0304478a54efa' \ 'aa1ecd05d1b760473e6bd06734075b6040998d77ee59d87bf' # 'admin' password2 = "58e8d27595663e0f3d74e5dfd83ec40cc3c6545de1a1088f355436d9f533ca71760" \ "3062f4fc6948de8da39c242c5ed2cdc1d845a39017fd44a7d44b08fa58daff8b1d2" \ "c0188b68a589e7384a1b857f8d147fef3ba4f90c74b19357441dc1acd4de81ce20e" \ "4795c4ce52e0896a16889112cb4df3f79ae15e9fac48ea6ae4f3900" # '111111' password3 = "09bc81d052f54794f0aa30c7c8e86de352622dfded7b014db1bbf10cc9beed17a85" \ "4faa2fe864ec22a09dbb2b25b9fc5a3f4d9be259676cf694f103af627d46ec21cc6" \ "d6b6a3d0ed5652e442034c1df2c33556e9b634b02d98f17815e1eb87c1ed942030e" \ "f09836b61b1ac1e6b3c3d704ada5e79aa4919546a83b9eae7f0381e" # 'tplink' password4 = "717b213f81fbd6198407c85ef1ac8fb6bf491f5ba089c093dac42c91e680029600f" \ "faed543eede6c5b5b24efb51ec971a5f260db913224b3ee725581c8c9a885b9d8a9" \ "d5b55da6f9a916b3b185efa64db249e23114443227fbe5b658884b904e93b32270f" \ "31584eed5aa6693d6e900b79ccd7f9a52fa099eef1ff488130884e6" # 'testtesttest' # **************************** example ********************************** # text = Encrypt(text='111111') # print text # # ************ return a encrypt value (str) or None ******************** # print text == password4 test = Encrypt(text='Admin12345@_2471') print('*************************************************************************') print(test)
10-24
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值