<feed xmlns="http://www.w3.org/2005/Atom"> <id>https://khayliang.github.io/</id><title>Khayliang's site</title><subtitle>Writings, portfolio, resume</subtitle> <updated>2026-08-29T08:06:27+00:00</updated> <author> <name>Khayliang Tan</name> <uri>https://khayliang.github.io/</uri> </author><link rel="self" type="application/atom+xml" href="https://khayliang.github.io/feed.xml"/><link rel="alternate" type="text/html" hreflang="en" href="https://khayliang.github.io/"/> <generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator> <rights> © 2026 Khayliang Tan </rights> <icon>/assets/img/favicons/favicon.ico</icon> <logo>/assets/img/favicons/favicon-96x96.png</logo> <entry><title>Tarjan's Algorithm</title><link href="https://khayliang.github.io/posts/tarjans-algo/" rel="alternate" type="text/html" title="Tarjan&amp;apos;s Algorithm" /><published>2026-08-29T00:00:00+00:00</published> <updated>2026-08-29T00:00:00+00:00</updated> <id>https://khayliang.github.io/posts/tarjans-algo/</id> <content type="text/html" src="https://khayliang.github.io/posts/tarjans-algo/" /> <author> <name>Khayliang Tan</name> </author> <category term="Computing" /> <category term="Algorithms" /> <summary>Tarjan’s algorithm is a modification of the Bridge Finding Algorithm except for directed graphs. We maintain a stack, with the following invariant: Let $S$ be a stack with vertices $v_1, \dots, v_k$. For a vertex $v_{k + 1}$ to be added onto the stack, there must exist a path from vertex $v_{k+1}$ to some previous vertex existing in the stack, $v_1,\dots,v_k$. We define a recursive functi...</summary> </entry> <entry><title>RSA Encryption</title><link href="https://khayliang.github.io/posts/rsa/" rel="alternate" type="text/html" title="RSA Encryption" /><published>2026-08-29T00:00:00+00:00</published> <updated>2026-08-29T00:00:00+00:00</updated> <id>https://khayliang.github.io/posts/rsa/</id> <content type="text/html" src="https://khayliang.github.io/posts/rsa/" /> <author> <name>Khayliang Tan</name> </author> <category term="Computing" /> <category term="Algorithms" /> <summary>Background Definitions The Euler’s totient function, represented as $\phi(n)$, gives us the number of positive integers up to $n$, that are relatively prime to $n$. For example, $\phi(9) = 6$ since the numbers $1,2,4,5,7,8$ are relatively prime. Lemmas Lemma 1: If $k$ is relatively prime to $n$, then there exists a multiplicative inverse $k^{-1}$ such that [k\cdot k^{-1} \equiv 1 \mod n] Pro...</summary> </entry> <entry><title>Kademlia Distributed Hash Table</title><link href="https://khayliang.github.io/posts/kademlia-dht/" rel="alternate" type="text/html" title="Kademlia Distributed Hash Table" /><published>2026-08-29T00:00:00+00:00</published> <updated>2026-08-29T00:00:00+00:00</updated> <id>https://khayliang.github.io/posts/kademlia-dht/</id> <content type="text/html" src="https://khayliang.github.io/posts/kademlia-dht/" /> <author> <name>Khayliang Tan</name> </author> <category term="Computing" /> <category term="Data Structures" /> <summary>Kademlia is a distributed hash table where the platform enables the distributed storage of key-value pairs with redundancy. Kademlia is composed of distributed processors connected together which we call nodes. Each node in the system gets a unique ID, and all IDs in Kademlia are of fixed binary length, including the keys that will be stored. Next, we can logically compute a distance between e...</summary> </entry> </feed>
