Portfolio
This page is an extension of my research experience and personal portfolios.
Computer Science
Chebyshev Encryption Scheme
- Chebyshev polynomial based encryption scheme.
- Chebyshev polynomial can be expressed recursively, forming a sequence of Chebyshev polynomials:

- Chebshev polynomial-based encryption scheme is a chaotic and sensitive system. The algorithm for encryption and decryption:

- You may notice we assume the keys to be extremely large. To address this in a real-world computer, we used the Square-and-product procedure to calculate the Chebyshev polynomial using matrix exponentiation, while representing large numbers in binary format.



- Given the system’s sensitivity, we used the GNU Multiple Precision Arithmetic Library (GMP[https://gmplib.org]) to increase the arithmetic precision in C/C++. Specifically, we used the MPZ and MPF data structure to store integers and floating-point numbers respectively.
- We introduced 2 variables: the number of significant digits of plaintexts (length, l), and the number of correct digits of the arithmetical calculations (precision, m). As demonstrated in our experiments, the system only succeeds when l and m are appropriately balanced below.

- In real-world scenarios, the encryption process involves two methods: symmetric block ciphering, and using an enveloping technique for large plaintexts. Detailed examples can be found in our paper.
- A common attack to the system is Bergamo’s attack.


- To perform Bergamo’s attack on the computer, I used the MPFR library for high-precision trigonometric functions.
- We assessed Bergamo’s attack with detailed numerical examples and discussed its effectiveness under certain conditions in the paper. (Unfortunately, the calculation of examples are too long to include here.)
- I wrote the manuscript with my supervisor and submitted the paper as the first author, published here.
- You can find codes and detailed explanation here.
Polynomial Reduction
- Programming Reduction for NP-Complete problem: 3-COLORING.
- Reduction from 3-SAT to 3-COLORING.



- Example: $(a \lor b \lor c) \land (b \lor \lnot c \lor \lnot d) \land (\lnot a \lor c \lor d) \land (a \lor \lnot b \lor \lnot d)$


- I wrote a program to reduce the 3-SAT problem to 3-COLORING problem. The result with an arbitrary example:


- You can find the codes here, and project report here.
Data Analysis
Analysis of Optical Modulation
- Processed experimental data and analyzed optical modulation.

- Codes.
Frequency Resolved Optical Gating (FROG)
- FROG is an algorithm for measuring the spectral phase of ultrashort laser pulses, which range from subfemtosecond to about a nanosecond in length. Invented in 1991 by Rick Trebino and Daniel J. Kane, website here.
- We focused on the Second Harmonic Generation (SHG) case of FROG.

- Our project aimed to investigate how dispersion affects the retrieved phase. Processed experimental data below.

- I conducted a thoroughout research on relevant papers and online resources to compare the effectiveness and accuracy of different algorithms of FROG, and chose the Principal Component Generalized Projections Algorithm of FROG from here.

- I applied the algorithm to the data and analyzed the retrieved phase. With substantial time spent on testing, debugging, and collaborating with lab members to understand the optical properties, we finally achieved an accurate and perfect result.


- You can find the codes here.
Second Development for Equipments in Lab
- RedPitaya
- RedPitaya is an open source equipment for signal acquisition with two 125MS/s (million samples per second) RF (Radio frequency) outputs and two 125MS/s RF inputs, with 50 MHz analog bandwidth and 14-bit ADC (Analog-to-digital converter) and DAC (Digital-to-analog converter). It has a 16k sample buffer, and a -1 to 1V range.

- It has various built-in options for decimation, allowing us to select the desired sample rate and buffer time length. However, due to the limited 16k ADC buffer, the sample rate and buffer time length are inversely proportional.

- In real-world optical measurement, we want to increase both the precision and buffer time length. Furthermore, we want the signal acquisition to be continuous.
- To address this, I programed to divide its 16k ADC buffer into two 8k ADC buffers. When I stores the data in the first part, RedPitaya acquires the data in the second part. Thus, at some balance point of sampling speed, continuous signal acquisition is realized. As a result, we can acquire whatever length of time we want.
- For example, data obtained by group members reached a length of 7x10^6 points, which is much longer than the original 16k points.

- Now, we have continuous signal acquisition, and a problem that comes out immediately is memory occupation. To reduce it, I stored the binary data from the ADC buffer directly, resulting in a decrease in memory to 1/8. The data size above is 12.5MB.
- NiMotion ModBus
- We needed to scan materials to analyze their changes under specific conditions. By integrating the RedPitaya software with a stepping machine NiMotion ModBus, I implemented automated scanning.


- Graphical User Interface
- To provide easy accessibility for other lab members, I created a Graphical User Interface using wxWidgets.


- The project successfully led to my co-authorship of a paper here.
- You can find the codes here.
Extra-curriculum
3D Modeling
I made a simulation video for the experiment of the Second Harmonic Generation FROG (Mentioned above) using Blender.


- You can find the video in YouTube here.
Posters
The posters I made for fun and during my work in Students’ Association using Photoshop and Illustrator.








