This paper proposes three one-time password (OTP) generation methods suitable for firmware OTPs, one of the most representative methods for addressing the rapidly growing demand for user authentication in online services, based on stream and block ciphers. The first method is a stream cipher-based approach consisting of a 127-bit linear feedback shift register (LFSR) and exclusive-OR (XOR) operators. The OTP output bits are determined using a bit-position selection derived from the digits of . The second method is a block cipherbased approach employing triple data encryption standard (TDES). Part of the output bits are used as the OTP output and the remaining bits are fed back to the input through an output feedback (OFB) mode. The third method adopts advanced encryption standard (AES) as the block cipher, using a portion of the output bits as the OTP output and feeding back a subset of the remaining bits to the input. All methods generate initial values through key-based random number generation applying message authentication code (MAC). The proposed methods are implemented on an Arduino platform as firmware-based OTP generators. Experimental results demonstrate that the proposed methods offer strong security properties and are suitable for firmwarebased OTP generation. In addition, the LFSR-based method shows good performance in the NIST SP 800-22 randomness tests.